SQL许可执行对多个对象(SQL grant execute on multiple objects

2019-08-04 15:11发布

大家好我想添加执行权限的多个对象的用户。 但我似乎无法通配符添加到我的代码。

GRANT EXECUTE ON OBJECT::dbo.CREATESERVERSESSIONS TO [domain\user];

这个工作,但我有很多与XU_从现在开始我要授予执行上与XU_启动所有存储过程的存储过程

GRANT EXECUTE ON OBJECT::dbo.XU_* TO [domain\user];

但不工作。 我希望有人知道解决这个。 提前致谢。

Answer 1:

不能使用通配符-你要授予任的所有对象(或在架构中的所有对象) -或者,那么你必须列出所有的对象一个接一个。

你可能做的就是这样的事情 - 有SQL服务器生成的报表为您提供:

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列,将其粘贴到一个新的窗口,并执行它。

如果你真的想自动化这个,你也可以把这个查询到一个光标,然后使用动态SQL来自动执行这些导致GrantCmd报表....



文章来源: SQL grant execute on multiple objects