2010-08-20 82 views

回答

37

授予他们VIEW DEFINITION特权那些特效,看到这里http://msdn.microsoft.com/en-us/library/ms175808.aspx

  • 服务器范围

  • 数据库范围

  • 架构范围

  • 个体实体

您还可以使用查询来生成脚本。所以如果你有一个用户Bob

select 'GRANT VIEW DEFINITION ON ' + quotename(specific_schema) 
+ '.' + quotename(specific_name) 
+ ' TO ' + 'BOB' 
    from INFORMATION_SCHEMA.routines 
where routine_type = 'PROCEDURE' 

这会给你这样的事情,然后你就可以运行在为DBO模式范围水平做的

GRANT VIEW DEFINITION ON [dbo].[aspnet_RegisterSchemaVersion] TO BOB 
GRANT VIEW DEFINITION ON [dbo].[aspnet_CheckSchemaVersion] TO BOB 
GRANT VIEW DEFINITION ON [dbo].[aspnet_Applications_CreateApplication] TO BOB 
+1

是否有任何替代方法来设置每个存储过程?我希望有一种方法不要求每个进程都被修改。 – adam0101 2010-08-20 17:06:16

+0

查看已更新回答 – SQLMenace 2010-08-20 17:20:26

+0

太棒了。谢谢 – adam0101 2010-08-20 17:24:54

4

我需要授予域帐户访问..语法,这是在架构

许可视图定义: :[DBO]为 “域\ BOB”

0

我对所有的数据库程序变种:

select 'GRANT VIEW DEFINITION ON [' + schema_name(schema_id) + '].[' + name + 
     '] TO ' + '[domain\username]' 
    from sys.all_objects 
where type_desc = 'SQL_STORED_PROCEDURE' 
    and schema_id <> schema_id('sys') 
0

尽管我知道这个问题迟到了,但对于那些来到这里寻找答案的人(就像我几分钟前做的那样),至少在SQL管理工作室2014中,您可以编辑用户帐户并编辑SECURABLES区域中的权限并勾选您希望他们有权访问的VIEW中的所有框。

这样做不需要运行脚本。