我有一个MSSQL 2005服务器设置和运行。 我想能够有以下的设置:
database_one
其中user_one
为db_owner
和
database_two
用user_two
作为db_owner
棘手的部分(至less对我来说)是我想从user_two
和database_two
隐藏database_two
从user_one
隐藏。
到目前为止,我已经find了VIEW ANY DATABASE
权限。 玩这个似乎无论如何设置一个用户更具体的权限, VIEW ANY DATABASE
权限优先。
如果我将DENY VIEW ANY DATABASE TO user_one
运行DENY VIEW ANY DATABASE TO user_one
,那么即使将user_one设置为database_one的db_owner,以user_one DENY VIEW ANY DATABASE TO user_one
连接也只会显示master
和tempdb
系统数据库。
有没有办法设置权限做我想要的?
sys.databases的可见性:
如果sys.databases的调用方不是数据库的所有者,并且数据库不是master或tempdb,则查看相应行所需的最小权限是ALTER ANY DATABASE或VIEW ANY DATABASE服务器级权限或CREATE DATABASE权限主数据库。 调用者连接到的数据库总是可以在sys.databases中查看。
所以默认的可见性正是你所要求的:每个用户都能够看到master,tempdb和它自己的数据库。 确保user_one是database_one的所有者 (不仅是db_ownerangular色的成员!),如下所示:
ALTER AUTHORIZATION ON DATABASE::database_one TO user_one;
如果设置正确(user_one是database_one的所有者,user_two是database_two的所有者),并且没有额外的permsisionsa被授予,那么你应该得到你所要求的。 具体来说,你不应该拒绝任何东西,事实上,你必须拒绝一个权限意味着你的testing(你授予额外的,不需要的,对user_one和user_two的login权限)有些问题。
将单独的实例帮助吗?