授予用户查看单个数据库的权限? (拒绝查看其余部分)

时间:2012-04-26 20:38:00

标签: sql-server sql-server-2008

我希望用户登录SQL服务器并只看到一个数据库。此用户不能是数据库所有者。 我已经尝试过DENY VIEW ANY DATABASE到[用户名] 我现在想GRANT查看[username]的单个数据库 这可能吗?我该怎么做呢? 谢谢。

编辑:澄清我的意思,我不希望用户甚至看到其他数据库存在,而不仅仅是他们无法进入数据库。

谢谢!

2 个答案:

答案 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>

它只能查看和使用所选的数据库。

更多细节: https://www.mssqltips.com/sqlservertip/2995/how-to-hide-sql-server-user-databases-in-sql-server-management-studio/