![SQL Server 中是否有 DDL 查看器角色?](https://linux22.com/image/630240/SQL%20Server%20%E4%B8%AD%E6%98%AF%E5%90%A6%E6%9C%89%20DDL%20%E6%9F%A5%E7%9C%8B%E5%99%A8%E8%A7%92%E8%89%B2%EF%BC%9F.png)
我有一个在 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
注意:在服务器级别授予权限时,主体还必须具有数据库级别的访问权限才能查看数据库中的定义。