大家好,我想为用户添加多个对象的执行权限。但我似乎无法在代码中添加通配符。
GRANT EXECUTE ON OBJECT::dbo.CREATESERVERSESSIONS TO [domain\user];
这可行,但我有很多以 XU_ 开头的存储过程,现在我想在所有以 XU_ 开头的存储过程上授予执行权限
GRANT EXECUTE ON OBJECT::dbo.XU_* TO [domain\user];
但这是行不通的。我希望有人知道这个问题的解决方案。提前致谢。
您不能使用通配符 - 您必须授予其中之一all对象(或模式中的所有对象) - 或者您必须一一列出所有对象。
您可能会做这样的事情 - 让 SQL Server 为您生成这些语句:
SELECT
p.Name,
GrantCmd = 'GRANT EXECUTE ON OBJECT::' + p.name + ' TO [domain\user]'
FROM sys.procedures p
WHERE p.Name LIKE 'XU%'
此查询将列出以以下开头的所有过程XU
并创建一个包含以下内容的列GRANT EXECUTE ON ....
该程序的声明。
在 SQL Server Management Studio 中运行此命令,然后复制生成的结果GrantCmd
列,将其粘贴到新窗口,然后在那里执行。
如果你really如果想要自动化执行此操作,您还可以将此查询转换为游标,然后使用动态 SQL 自动执行结果GrantCmd
声明....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)