Applies to:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
セキュリティ保護可能なリソースのプリンシパルに付与される有効なアクセス許可の一覧を返します。 関連する関数は HAS_PERMS_BY_NAME です。
構文
fn_my_permissions ( securable , 'securable_class' )
引数
securable
セキュリティ保護可能なリソースの名前。 セキュリティ保護可能なリソースがサーバーまたはデータベースの場合は、この値を NULL に設定する必要があります。
securable には sysname 型のスカラー式を指定します。
securable にはマルチパート名を指定できます。
'securable_class'
アクセス許可が一覧表示されるセキュリティ保護可能なセキュリティ保護可能なクラスの名前。
securable_class は sysname で、既定値は NULL です。
この引数は、APPLICATION ROLE、ASSEMBLY、ASYMMETRIC KEY、CERTIFICATE、CONTRACT、DATABASE、ENDPOINT、FULLTEXT CATALOG、LOGIN、MESSAGE TYPE、OBJECT、REMOTE SERVICE BINDING、ROLE、ROUTE、SCHEMASERVER、SERVICE、SYMMETRIC KEY、TYPE、USER、XML SCHEMA COLLECTIONのいずれかの値である必要があります。
NULLの値は既定で SERVER に設定されます。
返される列
次の表に、 fn_my_permissions 返される列の一覧を示します。 返される各行によって、セキュリティ保護可能なリソースについて、現在のセキュリティ コンテキストで保持されている権限の詳細が示されます。 クエリが失敗した場合に NULL を返します。
| 列名 | タイプ | 説明 |
|---|---|---|
entity_name |
sysname | 一覧表示されているアクセス許可が有効として付与されるセキュリティ保護可能なリソースの名前。 |
subentity_name |
sysname | セキュリティ保護可能なリソースに列がある場合は列名。それ以外の場合は NULL。 |
permission_name |
nvarchar | アクセス許可の名前。 |
解説
このテーブル値関数は、指定したセキュリティ保護可能なリソースに対して呼び出し元のプリンシパルが保持している有効なアクセス許可の一覧を返します。 有効なアクセス許可は、次のいずれかのオプションです。
- プリンシパルに直接許可されており、拒否されていない権限。
- プリンシパルが保持する上位レベルの権限に暗黙的に含まれており、拒否されていない権限。
- プリンシパルがメンバーとなっているロールまたはグループに許可されており、拒否されていない権限。
- プリンシパルがメンバーとなっているロールまたはグループが保持しており、拒否されていない権限。
権限の評価は、常に呼び出し元のセキュリティ コンテキストで実行されます。 他のプリンシパルが有効なアクセス許可を持っているかどうかを判断するには、呼び出し元がそのプリンシパルに対する IMPERSONATE アクセス許可を持っている必要があります。
スキーマ レベルのエンティティの場合、1 部、2 部、または 3 部構成の null 以外の名前が受け入れられます。 データベース レベルのエンティティの場合、1 部構成の名前が受け入れられ、 現在のデータベースを意味する null 値。 サーバー自体には、null 値 (つまり、 現在のサーバー) が必要です。
fn_my_permissions では、リンク サーバーのアクセス許可を確認できません。
次のクエリは、組み込みのセキュリティ保護可能なクラスの一覧を返します。
SELECT DISTINCT class_desc
FROM fn_builtin_permissions(DEFAULT)
ORDER BY class_desc;
GO
DEFAULT
securableまたはsecurable_classの値として指定された場合、値はNULLとして解釈されます。
fn_my_permissions関数は、Azure Synapse Analytics 専用 SQL プールではサポートされていません。
アクセス許可
ロール public のメンバーシップが必要です。
例
A. サーバーに対する有効なアクセス許可を一覧表示する
次の例では、サーバーについて、呼び出し元が保持している有効な権限の一覧を返します。
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
GO
B. データベースに対する有効なアクセス許可を一覧表示する
次の例では、AdventureWorks2025 データベースに対する呼び出し元の有効なアクセス許可の一覧が返されます。
USE AdventureWorks2022;
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
GO
C: ビューに対する有効なアクセス許可を一覧表示する
次の例では、vIndividualCustomer データベースの Sales スキーマにある AdventureWorks2025 ビューについて、呼び出し元が保持している有効な権限の一覧を返します。
USE AdventureWorks2022;
GO
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT')
ORDER BY subentity_name, permission_name;
GO
D. 別のユーザーの有効なアクセス許可を一覧表示する
次の例では、Wanida データベースの Employee スキーマに含まれる HumanResources テーブルに対するデータベース ユーザー AdventureWorks2025 の有効なアクセス許可の一覧が返されます。 呼び出し元には、ユーザー IMPERSONATEに対するWanidaアクセス許可が必要です。
EXECUTE AS USER = 'Wanida';
SELECT *
FROM fn_my_permissions('HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;
REVERT;
GO
E. 証明書に対する有効なアクセス許可を一覧表示する
次の例では、現在のデータベースに含まれる Shipping47 という名前の証明書に対する呼び出し元の有効なアクセス許可の一覧が返されます。
SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE');
GO
F. XML スキーマ コレクションに対する有効なアクセス許可を一覧表示する
次の例では、ProductDescriptionSchemaCollection データベースに含まれる AdventureWorks2025 という名前の XML スキーマ コレクションに対する呼び出し元の有効なアクセス許可の一覧が返されます。
USE AdventureWorks2022;
GO
SELECT * FROM fn_my_permissions(
'ProductDescriptionSchemaCollection',
'XML SCHEMA COLLECTION'
);
GO
G. データベース ユーザーに対する有効なアクセス許可を一覧表示する
次の例では、現在のデータベースに含まれる MalikAr という名前のユーザーに対する呼び出し元の有効なアクセス許可の一覧が返されます。
SELECT * FROM fn_my_permissions('MalikAr', 'USER');
GO
H. 別のログインの有効なアクセス許可を一覧表示する
次の例では、WanidaBenshoof データベースの Employee スキーマに含まれる HumanResources テーブルに対する SQL Server ログイン AdventureWorks2025 の有効なアクセス許可の一覧が返されます。 呼び出し元には、SQL Server ログイン IMPERSONATEに対するWanidaBenshoofアクセス許可が必要です。
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT *
FROM fn_my_permissions('AdventureWorks2022.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;
REVERT;
GO