2012-12-24 35 views
4

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

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

这个工作,但我有很多与XU_从现在开始我要授予执行上与XU_

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

开始,但不工作的所有存储过程的存储过程。我希望有人知道这个解决方案。提前致谢。

+1

不能使用通配符 - 你有授予**所有**对象(或模式中的所有对象) - 或然后你必须逐个列出所有对象 –

+0

哦,这将是吸吮......但好吧谢谢你的答案 – Chino

回答

6

您不能使用通配符 - 您必须授予全部对象(或架构中的所有对象),否则您必须逐个列出所有对象。

你可能做的就是这样的事情 - 有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报表....

+0

感谢这将工作很好:) – Chino

+1

简单而精彩。 – 5arx