sys.database_principals (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

SQL Server データベース内の各セキュリティ プリンシパルの行を返します。

列名 データ型 説明
name sysname プリンシパルの名前。データベース内で一意です。
principal_id int プリンシパルの ID。データベース内で一意です。
type char(1) プリンシパルの種類:

A = アプリケーション ロール

C = 証明書にマップされたユーザー

E = Azure Active Directoryからの外部ユーザー

G = Windows グループ

K = 非対称キーにマップされたユーザー

R = データベース ロール

S = SQL ユーザー

U = Windows ユーザー

X = Azure Active Directory グループまたはアプリケーションからの外部グループ
type_desc nvarchar(60) プリンシパルの種類の説明。

APPLICATION_ROLE

CERTIFICATE_MAPPED_USER

EXTERNAL_USER

WINDOWS_GROUP

ASYMMETRIC_KEY_MAPPED_USER

DATABASE_ROLE

SQL_USER

WINDOWS_USER

EXTERNAL_GROUPS
default_schema_name sysname SQL名でスキーマが指定されていない場合に使用する名前。 型 S、U、または A 以外のプリンシパルの場合は Null。
create_date datetime プリンシパルが作成された日時。
modify_date datetime プリンシパルが最後に変更された時刻。
owning_principal_id int このプリンシパルを所有するプリンシパルの ID。 既定では、固定データベース ロールはすべて dbo によって所有されます。
Sid varbinary(85) プリンシパルの SID (セキュリティ識別子)。 SYS スキーマと INFORMATION スキーマの場合は NULL。
is_fixed_role bit 1 の場合、この行は固定データベース ロールの 1 つ (db_owner、db_accessadmin、db_datareader、db_datawriter、db_ddladmin、db_securityadmin、db_backupoperator、db_denydatareader、db_denydatawriter) のエントリを表します。
authentication_type int 適用対象: SQL Server 2012 (11.x) 以降。

認証の種類を示します。 使用できる値とその説明を次に示します。

0 : 認証なし
1: インスタンス認証
2: データベース認証
3 : Windows 認証
4: Azure Active Directory認証
authentication_type_desc nvarchar(60) 適用対象: SQL Server 2012 (11.x) 以降。

認証の種類の説明。 使用できる値とその説明を次に示します。

NONE : 認証なし
INSTANCE : インスタンス認証
DATABASE : データベース認証
WINDOWS: Windows 認証
EXTERNAL: Azure Active Directory認証
default_language_name sysname 適用対象: SQL Server 2012 (11.x) 以降。

このプリンシパルの既定の言語を示します。
default_language_lcid int 適用対象: SQL Server 2012 (11.x) 以降。

このプリンシパルの既定の LCID を示します。
allow_encrypted_value_modifications bit 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。

一括コピー操作でのサーバーの暗号化メタデータ チェックを抑制します。 これにより、ユーザーは、Always Encryptedを使用して暗号化されたデータをテーブルまたはデータベース間で一括コピーできます。データの暗号化を解除する必要はありません。 既定値は OFF です。

解説

PasswordLastSetTime プロパティは、SQL Serverでサポートされているすべての構成で使用できますが、その他のプロパティは、SQL Serverが Windows Server 2003 以降で実行されていて、CHECK_POLICYとCHECK_EXPIRATIONの両方が有効になっている場合にのみ使用できます。 詳細については、「 パスワード ポリシー」 を参照してください。 principal_idの値は、プリンシパルが削除された場合に再利用される可能性があるため、増加し続ける保証はありません。

アクセス許可

すべてのユーザーは自分のユーザー名、システム ユーザー、および固定データベース ロールを参照できます。 他のユーザーを参照するには、ALTER ANY USER、またはユーザーに対する権限が必要です。 ユーザー定義ロールを参照するには、ALTER ANY ROLE、またはロールのメンバーシップが必要です。

A: データベース プリンシパルのすべての権限を一覧表示する

次のクエリは、データベース プリンシパルに対して明示的に許可または拒否されたアクセス許可の一覧です。

重要

固定データベース ロールのアクセス許可は、sys.database_permissionsには表示されません。 そのため、データベース プリンシパルには、ここに記載されていない追加のアクセス許可が与えられます。

SELECT pr.principal_id, pr.name, pr.type_desc,   
    pr.authentication_type_desc, pe.state_desc, pe.permission_name  
FROM sys.database_principals AS pr  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id;  

B: データベース内のスキーマ オブジェクトに対するアクセス許可の一覧表示

次のクエリは、sys.database_principalsとsys.database_permissionsを sys.objects と sys.schema に結合して、特定のスキーマ オブジェクトに対して付与または拒否されたアクセス許可を一覧表示します。

SELECT pr.principal_id, pr.name, pr.type_desc,   
    pr.authentication_type_desc, pe.state_desc,   
    pe.permission_name, s.name + '.' + o.name AS ObjectName  
FROM sys.database_principals AS pr  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id  
JOIN sys.objects AS o  
    ON pe.major_id = o.object_id  
JOIN sys.schemas AS s  
    ON o.schema_id = s.schema_id;  

例: Azure Synapse Analytics、Analytics Platform System (PDW)

C: データベース プリンシパルのすべてのアクセス許可を一覧表示する

次のクエリは、データベース プリンシパルに対して明示的に許可または拒否されたアクセス許可の一覧です。

重要

固定データベース ロールのアクセス許可は表示 sys.database_permissionsされません。 そのため、データベース プリンシパルには、ここに記載されていない追加のアクセス許可が与えられます。

SELECT pr.principal_id, pr.name, pr.type_desc,   
    pr.authentication_type_desc, pe.state_desc, pe.permission_name  
FROM sys.database_principals AS pr  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id;  

D: データベース内のスキーマ オブジェクトに対するアクセス許可の一覧表示

次のクエリは、特定のsys.database_principalssys.database_permissionsスキーマ オブジェクトに対してsys.objectssys.schemas許可または拒否されたアクセス許可を結合および一覧表示します。

SELECT pr.principal_id, pr.name, pr.type_desc,   
    pr.authentication_type_desc, pe.state_desc,   
    pe.permission_name, s.name + '.' + o.name AS ObjectName  
FROM sys.database_principals AS pr  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id  
JOIN sys.objects AS o  
    ON pe.major_id = o.object_id  
JOIN sys.schemas AS s  
    ON o.schema_id = s.schema_id;  

参照

プリンシパル (データベース エンジン)
sys.server_principals (Transact-SQL)
セキュリティ カタログ ビュー (Transact-SQL)
包含データベース ユーザー - データベースの可搬性を確保する
Azure Active Directory の認証を使用して、SQL データベースに接続します。