gpt4 book ai didi

sql - 如何获取对sql server中特定sp具有执行权限的用户?

转载 作者:行者123 更新时间:2023-12-04 18:04:14 27 4
gpt4 key购买 nike

如何获取对 MS SQL Server 2008 R2 中的特定存储过程具有执行权限的所有用户/用户组/用户角色。

最佳答案

对 SSMS 事件运行探查器跟踪显示 SSMS 使用以下查询为存储过程属性窗口收集此数据,您可能可以根据自己的目的进行自定义(请注意,需要自定义最后两个参数的值以考虑过程你感兴趣):

exec sp_executesql N'SELECT
grantee_principal.name AS [Grantee],
CASE grantee_principal.type WHEN ''R'' THEN 3 WHEN ''A'' THEN 4 ELSE 2 END - CASE ''database'' WHEN ''database'' THEN 0 ELSE 2 END AS [GranteeType]
FROM
sys.all_objects AS sp
INNER JOIN sys.database_permissions AS prmssn ON prmssn.major_id=sp.object_id AND prmssn.minor_id=0 AND prmssn.class=1
INNER JOIN sys.database_principals AS grantee_principal ON grantee_principal.principal_id = prmssn.grantee_principal_id
WHERE
(sp.type = @_msparam_0 OR sp.type = @_msparam_1 OR sp.type=@_msparam_2)
and(sp.name=@_msparam_3 and SCHEMA_NAME(sp.schema_id)=@_msparam_4)',
N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000)',
@_msparam_0=N'P',@_msparam_1=N'RF',@_msparam_2=N'PC',@_msparam_3=N'~procedure name~',@_msparam_4=N'~procedure schema~'

可能值得注意的是,这不包括由于高级角色成员资格(例如,作为 sysadmin 服务器角色的成员)而隐式具有执行权限的用户。

它也没有将角色成员资格扩展为单个用户。

关于sql - 如何获取对sql server中特定sp具有执行权限的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29939600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com