sys.database_principals (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

データベース内の各セキュリティ プリンシパルの行を返 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 SCHEMAS の場合は NULL です。
is_fixed_role bit 1 の場合、この行は、db_owner、db_accessadmin、db_datareader、db_datawriter、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 に結合しています。

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_principals sys.database_permissions 特定の sys.objects sys.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 データベースに接続します。