sys.database_principals (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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_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)
包含データベース ユーザー - データベースの可搬性を確保する
Microsoft Entra 認証を使用した Azure SQL への接続