我希望能够授予对我的 SQL Server 2008 数据库服务器的只读访问权限。特别是两个数据库,一个称为“live”,一个称为“stage”。
基本上,收到此用户名和密码的人应该能够从任何表中进行选择,但不能执行任何更新、删除或插入。当然,他们不应该能够执行 DDL 操作。如果必须的话,我可能会禁止他们运行存储过程。
有什么建议吗?
我希望能够授予对我的 SQL Server 2008 数据库服务器的只读访问权限。特别是两个数据库,一个称为“live”,一个称为“stage”。
基本上,收到此用户名和密码的人应该能够从任何表中进行选择,但不能执行任何更新、删除或插入。当然,他们不应该能够执行 DDL 操作。如果必须的话,我可能会禁止他们运行存储过程。
有什么建议吗?
在Security > Logins下,创建一个新登录名,并在User Mapping部分中,勾选两个数据库,并为每个选择db_datareader角色成员资格。
这将提供对每个 DB 中所有数据的读取访问权限。
如果您想在脚本中执行此操作,则需要从GRANT命令开始。
另一种方法是通过存储过程提供对数据的访问,而不是授予他们对原始数据的读取权限,而是授予他们对您选择的 SProcs 的执行权限。
最终修饰:如果设置这些权限很繁琐,您可能需要创建自己的数据库角色,并且可以如上所述分配这些权限。对于每个用户(现在和将来),您可以简单地将他们分配给该角色。
理想情况下,您将创建一个 Windows 组登录以对这些数据库进行读取访问 - 将 DATABASE 角色 db_datareader 分配给该组。