t-sql为存储过程创建用户并授予执行权限
我有一个创建数据库、存储过程、视图、表和udf的脚本。我想包含一个脚本来创建用户“user_1”,并授予数据库的执行权限 我尝试按照以下步骤为所有存储的进程创建grant exec命令t-sql为存储过程创建用户并授予执行权限,sql,sql-server,tsql,sql-server-2008,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 ' +
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 LOGIN TestUser WITH PASSWORD = 'TopSecret'
GRANT EXEC ON MyStoredProc TO TestUser
如果需要,也可以“创建用户”。创建登录:创建服务器级登录。然后。。。 创建用户:允许登录帐户附加到数据库。然后。。。 授予执行权限:授予数据库中所有sp和函数的执行权限。如果只想向特定SP授予权限,请使用“将abc上的执行授予xyz”
Create login abacadaba with password='ABVDe12341234';
Create user abacadaba for login abacadaba;
Grant Execute to abacadaba;
与原始用户的问题完全相同,但对我来说,这是TSQL中嵌入的坏字符-我猜是从任何源剪切和粘贴的 无论如何,根据你有多少空格,只需删除单词之间的空格,并替换为常规空格 在此之前,请尝试所有其他答案,这是不太可能的-我只是添加了它,因为有两行TSQL看起来彼此相同但在Management Studio中突出显示并运行时会产生不同的结果消息,这让人非常沮丧
更新:错误字符是从Microsoft Lync粘贴的您尝试了什么?您是否查看了“创建用户”或“授予”的联机帮助?我需要一个脚本来提取所有存储的过程并授予权限。请注意,如果用户名有任何特殊字符或数字,例如
123SPROCUSER
,则用户名必须用方括号括起来,例如[123SPROCUSER]
,这正是我要查找的。非常感谢。为什么SQL文档如此难以筛选?