2010-07-30 90 views
10

我有一个创建数据库,存储过程,视图,表格,udf的脚本。我想包含一个脚本来创建用户'user_1'并赋予数据库执行权限。t-sql创建用户并授予执行存储过程的权限

我尝试以下为所有存储的特效

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)不起作用创建补助exec命令。它给出

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

我该如何解决这个问题?

+0

您试过了什么?您是否查看了CREATE USER或GRANT的在线帮助? – 2010-07-30 18:46:46

回答

24

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

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

正是我在找的东西。谢谢。为什么SQL文档很难筛选? – 2014-12-13 08:35:07

2

你试过:

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

还可以通过 “CREATE USER” 如果这就是你想要的。

+0

我需要一个脚本来提取所有存储的特效和授予权限。 – stackoverflowuser 2010-07-30 19:15:25

+0

请注意,如果用户名有任何特殊字符或数字,例如'123SPROCUSER',那么用户名必须用方括号括起来,例如'[123SPROCUSER]' – Shrout1 2013-05-20 14:18:10

0

当初一模一样的问题,因为原来的用户,但对我来说是嵌入在TSQL坏人的角色 - 我从任何来源也被切断,从粘贴猜测。

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

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

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