我希望用户登录到 SQL 服务器并且只看到一个数据库。此用户不能是数据库所有者。我试过拒绝查看任何数据库到 [用户名],我现在想授予查看单个数据库到 [用户名] 这可能吗?我该怎么做呢?谢谢你。
编辑:澄清我的意思,我不希望用户甚至看到其他数据库存在,而不仅仅是他们不能进入数据库。
谢谢!
我希望用户登录到 SQL 服务器并且只看到一个数据库。此用户不能是数据库所有者。我试过拒绝查看任何数据库到 [用户名],我现在想授予查看单个数据库到 [用户名] 这可能吗?我该怎么做呢?谢谢你。
编辑:澄清我的意思,我不希望用户甚至看到其他数据库存在,而不仅仅是他们不能进入数据库。
谢谢!
我假设您在这里谈论的是 SQL Server Management Studio。简而言之,如果您无法将 DBO 授予用户(这是完全可以理解的),那么目前没有一种方法可以实现您想要的。
通过发行,您已经尽可能接近
DENY VIEW ANY DATABASE TO <customerlogin>
有效地向用户隐藏所有数据库。如果不使用户成为 DBO,则无法将查看功能仅打开到一个。这不是 Mike Hotek 著名的 SQL 专家所添加的功能。
您可以在此 MSDN 线程上看到有关此愿望的更长更详细的讨论。
http://social.msdn.microsoft.com/Forums/en/sqlsecurity/thread/a989ca87-660d-41c4-9dac-70b29a83ddfb
拒绝特定用户查看任何数据库后:
DENY VIEW ANY DATABASE TO <customerlogin>
如果将此用户设为特定数据库的 db_owner:
USE <customdatabase>
exec SP_changedbowner <customerlogin>
它将只能查看和使用所选数据库。