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 です。
構文
fn_my_permissions ( securable , 'securable_class' )
引数
securable
セキュリティ保護可能なリソースの名前。 セキュリティ保護可能なリソースがサーバーまたはデータベースの場合、この値は NULL
. securable には sysname 型のスカラー式を指定します。 securable にはマルチパート名を指定できます。
'securable_class'
アクセス許可が一覧表示されるセキュリティ保護可能なセキュリティ保護可能なクラスの名前。 securable_classは sysname で、既定値は NULL
.
この引数には、次のいずれかの値を指定する必要があります。APPLICATION ROLE
, , ASYMMETRIC KEY
, CERTIFICATE
, , CONTRACT
, ENDPOINT
DATABASE
, FULLTEXT CATALOG
, LOGIN
, MESSAGE TYPE
, , OBJECT
, REMOTE SERVICE BINDING
, ROLE
, , ROUTE
, USER
SERVER
SERVICE
TYPE
XML SCHEMA COLLECTION
SCHEMA
SYMMETRIC KEY
. ASSEMBLY
既定値SERVER
は NULL
.
返される列
次の表に、返される列の一覧を 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
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示