sys.fn_my_permissions (Transact-SQL)

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

セキュリティ保護可能なリソースのプリンシパルに付与される有効なアクセス許可の一覧を返します。 関連する関数は HAS_PERMS_BY_NAME です。

Transact-SQL 構文表記規則

構文

fn_my_permissions ( securable , 'securable_class' )

引数

securable

セキュリティ保護可能なリソースの名前。 セキュリティ保護可能なリソースがサーバーまたはデータベースの場合、この値は NULL. securable には sysname 型のスカラー式を指定します。 securable にはマルチパート名を指定できます。

'securable_class'

アクセス許可が一覧表示されるセキュリティ保護可能なセキュリティ保護可能なクラスの名前。 securable_classは sysname で、既定値は NULL.

この引数には、次のいずれかの値を指定する必要があります。APPLICATION ROLE, , ASYMMETRIC KEY, CERTIFICATE, , CONTRACT, ENDPOINTDATABASE, FULLTEXT CATALOG, LOGIN, MESSAGE TYPE, , OBJECT, REMOTE SERVICE BINDING, ROLE, , ROUTE, USERSERVERSERVICETYPEXML SCHEMA COLLECTIONSCHEMASYMMETRIC KEY. ASSEMBLY 既定値SERVERNULL .

返される列

次の表に、返される列の一覧を 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

セキュリティ保護可能またはsecurable_class値として指定された場合DEFAULT、値は 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