私は次を使用して有効なアクセス許可を照会できることを知っていますsys.fn_my_permissions
:
USE myDatabase;
SELECT * FROM fn_my_permissions('dbo.myTable', 'OBJECT')
entity_name | subentity_name | permission_name
------------------------------------------------
dbo.myTable | | SELECT
dbo.myTable | | UPDATE
...
これにより、現在のユーザーがmyTable
databaseでSELECT、INSERT、UPDATEなどの権限を持っているかどうかがわかりますmyDatabase
。
ユーザーがこれらの権限を持っている理由を簡単に見つけることは可能ですか?たとえばfn_my_permissions_ex
、追加のreason
列を出力する関数が必要です。
USE myDatabase;
SELECT * FROM fn_my_permissions_ex('dbo.myTable', 'OBJECT')
entity_name | subentity_name | permission_name | reason
------------------------------------------------------------------------------------------------------------------------------------
dbo.myTable | | SELECT | granted to database role public
dbo.myTable | | UPDATE | member of group MYDOMAIN\Superusers, which belongs to database role db_datawriter
...
残念ながら、SQL Serverのドキュメントにはそのような関数が見つかりませんでした。この機能を提供するツールまたはスクリプトはありますか?
なぜあなたはそれをtxtファイルにエクスポートしませんか?あなたはどのOSを使用していますか?
—
jcho360
@ jcho360:関数はない
—
ハインジ
fn_my_permission_ex
ので、エクスポートできるものは何もありません。私はその機能を備えた機能またはツールがあるかどうかを尋ねています。
SSMSを使用していますか?
—
jcho360
素晴らしい質問。私はこれを非常に長い間理解しようとしてきました。fn_my_permissionsは少し動作しますが、多くの場合、オリジンまで追跡できない許可を表示します。
—
PseudoToad 14年