【问题标题】:SQL grant execute on multiple objectsSQL授权在多个对象上执行
【发布时间】:2012-12-24 19:27:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您不能使用通配符 - 您必须授予 所有 对象(或架构中的所有对象) - 或者您必须一一列出所有对象跨度>
  • 哦,那会很糟糕......但是好的,谢谢你的回答

标签: database sql-server-2008 sql-grant


【解决方案1】:

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

您可能会做这样的事情 - 让 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 语句......

【讨论】:

  • 简单而精彩。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多