15

SQL Server 2008 R2 を使用しています。データベース ユーザー (MYUSER) が実行権限を持つすべてのストアド プロシージャを一覧表示する必要があります。

また、ユーザーがEXECUTE権限を持っていないが、ストアドプロシージャのスクリプトを読み取ることができるストアドプロシージャをリストする必要があります

これらの目的のための SQL ステートメントまたはヘルパー関数はありますか?

参照:

  1. 特定のデータベース内のすべてのストアド プロシージャに対する実行権限の付与
4

5 に答える 5

19

使用HAS_PERMS_BY_NAME:

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
于 2012-10-31T07:54:14.010 に答える
16

別のユーザーの権限を確認するには、次を使用します。

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で動作します。

于 2014-08-07T08:56:19.850 に答える
5

HAS_PERMS_BY_NAME、最初の回答で提供されたスクリプトのコンテキストで使用されるように"MYUSER"、この関数以降のように接続されている場合にのみ、目的の結果が得られます

「現在のユーザーの有効な権限を評価します」

于 2012-11-01T22:44:55.590 に答える