MSSQL - 隐藏数据库

MSSQL - 隐藏数据库

我已经安装并运行了 MSSQL 2005 服务器。我希望能够进行以下设置:

database_oneuser_one作为 db_owner

database_twouser_two作为 db_owner

棘手的部分(至少对我来说)是我希望database_one被隐藏user_two并且database_two被隐藏user_one

到目前为止,我已经找到了VIEW ANY DATABASE权限。尝试了一下,似乎无论我如何为用户设置更具体的权限,权限VIEW ANY DATABASE都优先。

如果我运行DENY VIEW ANY DATABASE TO user_one,以 user_one 身份连接将只显示mastertempdb系统数据库,即使 user_one 被设置为 database_one 的 db_owner。

有没有办法设置权限来做我想做的事情?

答案1

的可见性系统数据库

如果 sys.databases 的调用者不是数据库的所有者,并且数据库不是 master 或 tempdb,则查看相应行所需的最低权限是 ALTER ANY DATABASE 或 VIEW ANY DATABASE 服务器级别权限,或 master 数据库中的 CREATE DATABASE 权限。调用者连接到的数据库始终可以在 sys.databases 中查看。

因此默认可见性是确切地您的要求是:每个用户都可以看到 master、tempdb 和它自己的数据库。确保 user_one 是所有者database_one(不仅仅是 db_owner 角色的成员!),如下所示:

ALTER AUTHORIZATION ON DATABASE::database_one TO user_one;

如果设置正确(user_one 是 database_one 的所有者,user_two 是 database_two 的所有者),并且不授予任何额外许可那么你应该得到你想要的东西。具体来说,你不应该拒绝任何事情,事实上你必须拒绝一个权限意味着你的测试有问题(你向 user_one 和 user_two 的登录授予了额外的、不需要的权限)。

答案2

单独的实例有帮助吗?

相关内容