sys.database_principals (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

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

Note

Microsoft Entra ID は、以前は Azure Active Directory (Azure AD) と呼ばれていました。

列の説明

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

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

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

E = Microsoft Entra ID からの外部ユーザー

G = Windows グループ

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

R = データベース ロール

S = SQL ユーザー

U = Windows ユーザー

X = Microsoft Entra グループまたはアプリケーションの外部グループ
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 の場合、この行は固定データベース ロールのいずれかのエントリを表します (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: Microsoft Entra 認証
authentication_type_desc nvarchar(60) 適用対象: SQL Server 2012 (11.x) 以降。

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

NONE : 認証なし
INSTANCE : インスタンス認証
DATABASE : データベース認証
WINDOWS : Windows 認証
EXTERNAL: Microsoft Entra 認証
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.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;  

例: 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_permissionssys.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)
包含データベース ユーザー - データベースの可搬性を確保する
Microsoft Entra 認証を使用した Azure SQL への接続