我有一个脚本可以创建数据库,存储过程,视图,表,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)
不起作用。它给出了
';'附近的语法不正确。
我该如何解决这个问题?
答案 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粘贴了错误的字符