SQL Server 2008 R2 を使用しています。データベース ユーザー (MYUSER) が実行権限を持つすべてのストアド プロシージャを一覧表示する必要があります。
また、ユーザーがEXECUTE権限を持っていないが、ストアドプロシージャのスクリプトを読み取ることができるストアドプロシージャをリストする必要があります
これらの目的のための SQL ステートメントまたはヘルパー関数はありますか?
参照:
SQL Server 2008 R2 を使用しています。データベース ユーザー (MYUSER) が実行権限を持つすべてのストアド プロシージャを一覧表示する必要があります。
また、ユーザーがEXECUTE権限を持っていないが、ストアドプロシージャのスクリプトを読み取ることができるストアドプロシージャをリストする必要があります
これらの目的のための SQL ステートメントまたはヘルパー関数はありますか?
参照:
select name,
has_perms_by_name(name, 'OBJECT', 'EXECUTE') as has_execute,
has_perms_by_name(name, 'OBJECT', 'VIEW DEFINITION') as has_view_definition
from sys.procedures
別のユーザーの権限を確認するには、次を使用します。
use my_db;
EXECUTE AS user = 'my_user'
SELECT SUSER_NAME(), USER_NAME();
select name,
has_perms_by_name(name, 'OBJECT', 'EXECUTE') as has_execute
from sys.procedures
where name = 'myprocname';
revert;
私のSQL Server 2012で動作します。
HAS_PERMS_BY_NAME
、最初の回答で提供されたスクリプトのコンテキストで使用されるように"MYUSER"
、この関数以降のように接続されている場合にのみ、目的の結果が得られます
「現在のユーザーの有効な権限を評価します」