t-sql创建用户并授予对存储过程的权限执行权限

时间:2010-07-30 18:39:59

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

我有一个脚本可以创建数据库,存储过程,视图,表,udf。我想要包含一个脚本来创建用户'user_1'并为数据库授予执行权限。

我尝试了为所有存储过程创建grant exec命令

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)不起作用。它给出了

  

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

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:2)

你试过了吗?

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

如果那是你想要的,你也可以“创建用户”。

答案 2 :(得分:0)

与原始用户有完全相同的问题,但对我来说,它是嵌入在TSQL中的不良字符 - 我猜测它来自切割和粘贴的任何来源。

无论如何,根据你有多少空格,只需删除单词之间的空格,然后用常规空格替换。

在此之前尝试所有其他答案,这是相当不可能的 - 我只是添加它,因为它是如此令人沮丧的2行TSQL看起来相同高于/低于彼此,但导致在Management Studio中突出显示并运行时会显示不同的结果消息...

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