我有一个在 SQL Server 2008 中具有 db_datareader 角色的用户,我需要该用户能够查看存储过程、函数、表脚本等。
那是什么角色?我不希望用户运行 DDL 脚本(更改表或过程)。我只希望用户能够读取数据库中的任何内容。
谢谢你!
答案1
您正在寻找VIEW DEFINITION
。
VIEW DEFINITION
您可以在各个范围(服务器、数据库、模式、特定对象)授予主体。
存储过程的示例:
Use MyDB
GRANT VIEW DEFINITION ON p_MyProc TO SomeUser
对于数据库中的所有对象:
Use MyDB
GRANT VIEW DEFINITION TO SomeUser
对于服务器上的所有对象:
USE master
GRANT VIEW ANY DEFINITION TO SomeUSer
注意:在服务器级别授予权限时,主体还必须具有数据库级别的访问权限才能查看数据库中的定义。