我们有一台临时服务器,用于在正式上线前进行最终验收测试。它是 Live 的一个副本,开发人员的权限不高于普通用户。我试图授予开发人员对该服务器上的数据和对象的只读权限,以便他们可以调查错误。
我让他们担任 db_datareader 成员的角色,这为他们提供了数据和表架构,但他们看不到视图、存储过程和函数中的内容,所以他们不断来找我了解情况。我无法将他们添加到 db_ddladmin,因为这会让他们更改对象,而且我看不到任何其他看起来正确的固定服务器或数据库角色。
我是否真的必须授予他们有关每个对象的 VIEW DEFINITION 权限,或者是否有更简洁的方法?
答案1
您可以在架构级别授予“查看定义”权限。最简单的方法是在临时数据库中创建一个新角色(例如“dev_datareader”)。然后执行以下操作,如果架构名称不同,则用“dbo”替换架构名称:
GRANT SELECT, VIEW DEFINITION ON SCHEMA::[dbo] TO [dev_datareader]
答案2
以下是完整的 SQL(包含用户创建)
CREATE LOGIN dev_datareader
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
GO
CREATE USER dev_datareaderFOR LOGIN dev_datareader;
GO
GRANT SELECT, VIEW DEFINITION ON SCHEMA::[dbo] TO dev_datareader