【问题标题】:t-sql create user and grant execute on permission for stored procedurest-sql 创建用户并授予对存储过程的执行权限
【发布时间】:2011-03-23 09:53:51
【问题描述】:

我有一个创建数据库、存储过程、视图、表、udf 的脚本。我想包含一个脚本来创建用户“user_1”并授予对数据库的执行权限。

我尝试以下为所有存储的过程创建授权执行命令

declare @permission varchar(max)

select @permission = COALESCE(
    @permission + '; ' + 'Grant Execute on ' + name +  ' user_1', 
   'Grant Execute on ' + name +  ' user_1')
from sysobjects where xtype in ('P')

exec (@permission)

但是exec (@permission) 不起作用。它给了

';' 附近的语法不正确。

我该如何解决这个问题?

【问题讨论】:

  • 你试过什么?您是否查看了 CREATE USER 或 GRANT 的在线帮助?

标签: sql sql-server tsql sql-server-2008


【解决方案1】:

创建登录:创建服务器级登录。然后... 创建用户:让登录帐户附加到您的数据库。然后... Grant Execute To:授予对数据库中所有 sp 和函数的执行权限。如果您只想授予特定 sps 的权限,请使用“Grant Execute ON abc TO xyz”。

Create login abacadaba with password='ABVDe12341234';
Create user abacadaba for login abacadaba;
Grant Execute to abacadaba;

【讨论】:

  • 正是我想要的。谢谢你。为什么 SQL 文档很难筛选?
【解决方案2】:

你试过了吗:

CREATE LOGIN TestUser WITH PASSWORD = 'TopSecret'
GRANT EXEC ON MyStoredProc TO TestUser

如果您愿意,也可以“创建用户”。

【讨论】:

  • 我需要一个脚本来提取所有存储的过程并授予权限。
  • 请注意,如果用户名有任何特殊字符或数字,例如123SPROCUSER,则用户名必须用方括号括起来,例如[123SPROCUSER]
【解决方案3】:

与原始用户有完全相同的问题,但对我来说,这是嵌入在 TSQL 中的错误字符 - 我猜它是从哪个来源剪切和粘贴的。

无论如何,这取决于您有多少空格,只需删除单词之间的空格并替换为常规空格即可。

在此之前尝试所有其他答案,这不太可能 - 我只是添加它,因为有 2 行 TSQL 看起来 相同 彼此上方/下方,但导致突出显示并在 Management Studio 中运行时出现不同的结果消息...

更新:错误字符是从 Microsoft Lync 粘贴的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多