web-dev-qa-db-ja.com

GRANT EXECUTETOユーザーまたはロールが適用されたかどうかを確認します

Microsoft SQL Serverでは、

GRANT EXECUTE TO <principal>

一部のユーザーまたはロールに実行権限を付与します。検出に興味があります:

そのGRANT EXECUTEコマンドがすでに特定のユーザー/ロールに適用されているかどうかを同じように簡単に確認するにはどうすればよいですか?(私または他の管理者による)

例:

GRANT EXECUTE TO user01を使用して数週間後に戻ってきた場合:私(または他の誰か)がすでにGRANT EXECUTE TO user01を使用したかどうかを確認する簡単な方法はありますか?

2
miroxlav

私はそれが保存されている場所を見つけたので、誰かがより簡単な答えを投稿するまで、私はチェックのためにこのコードスニペットを手元に置いておきます:

DECLARE @username nvarchar(128) = 'user01';

SELECT COUNT(*) FROM sys.database_permissions 
    WHERE grantee_principal_id = (SELECT UID FROM sysusers WHERE name = @username) 
        AND class_desc = 'DATABASE'
        AND type='EX' 
        AND permission_name='EXECUTE' 
        AND state = 'G';

結果0は否定的な答えを意味し、1はポジティブを意味します。

2
miroxlav