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