11

我希望用户登录到 SQL 服务器并且只看到一个数据库。此用户不能是数据库所有者。我试过拒绝查看任何数据库到 [用户名],我现在想授予查看单个数据库到 [用户名] 这可能吗?我该怎么做呢?谢谢你。

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

谢谢!

4

2 回答 2

11

我假设您在这里谈论的是 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

于 2012-04-26T21:43:23.923 回答
2

拒绝特定用户查看任何数据库后:

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/

于 2016-04-13T12:23:55.880 回答