SQL授权在多个对象上执行

Chi*_*ino 5 database grant sql-server-2008

大家好我想为多个对象添加执行权限.但我似乎无法在我的代码中添加通配符.

GRANT EXECUTE ON OBJECT::dbo.CREATESERVERSESSIONS TO [domain\user];
Run Code Online (Sandbox Code Playgroud)

这工作但我有很多以XU_开头的存储过程现在我希望在所有以XU_开头的存储过程上执行grant

GRANT EXECUTE ON OBJECT::dbo.XU_* TO [domain\user];
Run Code Online (Sandbox Code Playgroud)

但那不起作用.我希望有人知道解决这个问题.提前致谢.

mar*_*c_s 8

您不能使用通配符 - 您必须向所有对象(或架构中的所有对象)授予- 或者您必须逐个列出所有对象.

您可能会这样做 - 让SQL Server为您生成这些语句:

SELECT
   p.Name,
   GrantCmd = 'GRANT EXECUTE ON OBJECT::' + p.name + ' TO [domain\user]'
FROM sys.procedures p
WHERE p.Name LIKE 'XU%'
Run Code Online (Sandbox Code Playgroud)

此查询将列出所有以该过程开头的过程,XU并创建包含该GRANT EXECUTE ON ....过程语句的列.

在SQL Server Management Studio中运行它,然后只需复制生成的GrantCmd列,将其粘贴到新窗口,然后在那里执行.

如果你真的想要自动执行此操作,你也可以将此查询转换为游标,然后使用动态SQL自动执行那些结果GrantCmd语句....