sys.fn_my_permissions (Transact-SQL)
適用対象: 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
、SCHEMA
、ROUTE
SERVER
、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. データベースに対する有効なアクセス許可を一覧表示する
次の例では、AdventureWorks2022
データベースに対する呼び出し元の有効なアクセス許可の一覧が返されます。
USE AdventureWorks2022;
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
GO
C: ビューに対する有効なアクセス許可を一覧表示する
次の例では、AdventureWorks2022
データベースの vIndividualCustomer
スキーマにある Sales
ビューについて、呼び出し元が保持している有効な権限の一覧を返します。
USE AdventureWorks2022;
GO
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT')
ORDER BY subentity_name, permission_name;
GO
D. 別のユーザーの有効なアクセス許可を一覧表示する
次の例では、AdventureWorks2022
データベースの HumanResources
スキーマに含まれる Employee
テーブルに対するデータベース ユーザー Wanida
の有効なアクセス許可の一覧が返されます。 呼び出し元には、ユーザー Wanida
に対するIMPERSONATE
アクセス許可が必要です。
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 スキーマ コレクションに対する有効なアクセス許可を一覧表示する
次の例では、AdventureWorks2022
データベースに含まれる ProductDescriptionSchemaCollection
という名前の 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. 別のログインの有効なアクセス許可を一覧表示する
次の例では、AdventureWorks2022
データベースの HumanResources
スキーマに含まれる Employee
テーブルに対する SQL Server ログイン WanidaBenshoof
の有効なアクセス許可の一覧が返されます。 呼び出し元には、SQL Server ログイン WanidaBenshoof
に対するIMPERSONATE
アクセス許可が必要です。
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT *
FROM fn_my_permissions('AdventureWorks2022.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;
REVERT;
GO