如何在SQL Server中查找具有存储过程的执行权限的所有用户

kev*_*der 3 sql-server sql-server-2008-r2

...使用SQL Server 2008 R2.我知道如何查找用户有权使用的所有对象,但是如何找到对特定对象具有执行权限的所有帐户

Rah*_*hul 8

如何找到用户在SP上执行权限的下方查询将帮助您获得所需信息(未经过测试..因此可能需要进行小的调整).

SELECT
s.name AS SchemaName,
o.name AS ObjectName,
dp.name AS PrincipalName,
dperm.type AS PermissionType,
dperm.permission_name AS PermissionName,
dperm.state AS PermissionState,
dperm.state_desc AS PermissionStateDescription
FROM sys.objects o
INNER JOIN sys.schemas s on o.schema_id = s.schema_id
INNER JOIN sys.database_permissions dperm ON o.object_id = dperm.major_id
INNER JOIN sys.database_principals dp 
ON dperm.grantee_principal_id = dp.principal_id
WHERE
dperm.class = 1 --object or column
AND
dperm.type = 'EX'
AND 
dp.name = 'Specific_username'
AND
o.name = 'specific_object_name'
Run Code Online (Sandbox Code Playgroud)