fn_my_permissions (Transact-SQL)
更新 : 2006 年 12 月 12 日
セキュリティ保護可能なリソースについて、プリンシパルに許可されている有効な権限の一覧を返します。
構文
fn_my_permissions ( securable , 'securable_class')
引数
- securable
セキュリティ保護可能なリソースの名前を指定します。セキュリティ保護可能なリソースがサーバーまたはデータベースの場合、この値は NULL に設定する必要があります。securable は sysname 型のスカラ式で、複数の要素で構成される名前を指定できます。
'securable_class'
権限を一覧表示する、セキュリティ保護可能なリソースのクラスの名前を指定します。securable_class のデータ型は sysname です。securable_class には、APPLICATION ROLE、ASSEMBLY、ASYMMETRIC KEY、CERTIFICATE、CONTRACT、DATABASE、ENDPOINT、FULLTEXT CATALOG、LOGIN、MESSAGE TYPE、OBJECT、REMOTE SERVICE BINDING、ROLE、ROUTE、SCHEMA、SERVER、SERVICE、SYMMETRIC KEY、TYPE、USER、XML SCHEMA COLLECTION のいずれかを指定する必要があります。メモ : 大文字と小文字を区別する照合順序を使用している場合、セキュリティ保護可能なクラスはすべて小文字で入力してください。
解説
このテーブル値関数では、指定したセキュリティ保護可能なリソースについて、呼び出し元のプリンシパルが保持している有効な権限の一覧が返されます。有効な権限とは、次のような権限です。
- プリンシパルに直接許可されており、拒否されていない権限。
- プリンシパルが保持する上位レベルの権限に暗黙的に含まれており、拒否されていない権限。
- プリンシパルがメンバとなっているロールまたはグループに許可されており、拒否されていない権限。
- プリンシパルがメンバとなっているロールまたはグループが保持しており、拒否されていない権限。
権限の評価は、常に呼び出し元のセキュリティ コンテキストで実行されます。プリンシパルに有効な権限があるかどうかを評価するには、呼び出し元に、そのプリンシパルに対する 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 または securable_class の値に DEFAULT を指定した場合、値は NULL として解釈されます。
返される列
次の表は、fn_my_permissions で返される列の一覧です。返される各行によって、セキュリティ保護可能なリソースについて、現在のセキュリティ コンテキストで保持されている権限の詳細が示されます。クエリが失敗した場合は NULL が返されます。
列名 | 型 | 説明 |
---|---|---|
entity_name |
sysname |
表示される有効な権限の対象となる、セキュリティ保護可能なリソースの名前。 |
subentity_name |
sysname |
セキュリティ保護可能なリソースに列がある場合は列名、それ以外の場合は NULL。 |
permission_name |
nvarchar |
権限の名前。 |
例
A. サーバーの有効な権限を一覧表示する
次の例では、サーバーについて、呼び出し元が保持している有効な権限の一覧を返します。
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
GO
B. データベースの有効な権限を一覧表示する
次の例では、AdventureWorks
データベースについて、呼び出し元が保持している有効な権限の一覧を返します。
USE AdventureWorks;
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
GO
C. ビューの有効な権限を一覧表示する
次の例では、AdventureWorks
データベースの Sales
スキーマにある vIndividualCustomer
ビューについて、呼び出し元が保持している有効な権限の一覧を返します。
USE AdventureWorks;
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT')
ORDER BY subentity_name, permission_name ;
GO
D. 別のユーザーの有効な権限を一覧表示する
次の例では、AdventureWorks
データベースの 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
C. 証明書の有効な権限を一覧表示する
次の例では、現在のデータベースにある Shipping47
という証明書について、呼び出し元が保持している有効な権限の一覧を返します。
SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE');
GO
F. XML スキーマ コレクションの有効な権限を一覧表示する
次の例では、AdventureWorks
データベースにある ProductDescriptionSchemaCollection
という XML スキーマ コレクションについて、呼び出し元が保持している有効な権限の一覧を返します。
USE AdventureWorks;
SELECT * FROM fn_my_permissions('ProductDescriptionSchemaCollection',
'XML SCHEMA COLLECTION');
GO
G. データベース ユーザーの有効な権限を一覧表示する
次の例では、現在のデータベースに存在する MalikAr
というユーザーについて、呼び出し元が保持している有効な権限の一覧を返します。
SELECT * FROM fn_my_permissions('MalikAr', 'USER');
GO
H. 別のログインの有効な権限を一覧表示する
次の例では、AdventureWorks
データベースの HumanResources
スキーマにある Employee
テーブルについて、SQL Server ログイン WanidaBenshoof
が保持している有効な権限の一覧を返します。呼び出し元には、SQL Server ログイン WanidaBenshoof
に対する IMPERSONATE 権限が必要です。
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT * FROM fn_my_permissions('AdventureWorks.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name ;
REVERT;
GO
参照
関連項目
セキュリティ関数 (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL)
セキュリティ カタログ ビュー (Transact-SQL)
EXECUTE AS (Transact-SQL)
その他の技術情報
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|