gpt4 book ai didi

database - SQL 授权在多个对象上执行

转载 作者:太空狗 更新时间:2023-10-30 01:50:58 25 4
gpt4 key购买 nike

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

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

这行得通,但我有很多以 XU_ 开头的存储过程,现在我想对所有以 XU_ 开头的存储过程授予执行权限

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

但这不起作用。我希望有人知道解决这个问题的方法。提前致谢。

最佳答案

您不能使用通配符 - 您必须授予所有对象(或模式中的所有对象)- 或者您必须一一列出所有对象。

你可能会做这样的事情 - 让 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 列,将其粘贴到新窗口,然后在那里执行。

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

关于database - SQL 授权在多个对象上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020704/

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