kev*_*ski 0 sql-server permissions
我正在努力使测试用户只能看到他有权访问的数据库。目前,用户只能看到他有权访问的一个数据库,但他现在db_owner是那个数据库的。我不认为测试用户应该是,db_owner因为这使他可以访问数据库中的所有内容。从我在网上找到的文章来看,这似乎是使用户只能看到单个数据库的唯一方法。当我使用时,DENY VIEW ANY DATABASE TO [user]他在服务器中看不到任何数据库,包括我已授予显式查看权限的数据库。有没有办法让他只查看单个数据库而不给他db_owner特权?
我引用的文章在这里。
首先,如果DENY VIEW ANY DATABASE TO [user]它甚至不会“看到”它是db_owner角色成员的数据库,除了sysadmin,只会database owner“看到”它拥有的数据库。
Database owner与db_owner角色的成员身份不同,它是authorization在该数据库 ( grant authorization on database::myDB to myLogin)上拥有的登录名,因此一次只有一个人login可以拥有该数据库,并且相应的user拥有该数据库中的所有权限,并且即使在 OE 中也可以“看到”它VIEW ANY DATABASE被拒绝相应的登录。
说有一个替代解决方案可以解决您的问题,那就是SQL Server 2012 Contained Database Feature
从 SQL Server 20012 开始,您可以Contained Database Feature在实例级别启用,然后创建您的数据库contained。
这意味着,将有一个database,而不是server给authenticate你的用户,而所有这些用户会“看到”仅在其中创建它们的数据库。他们不会在服务器级别“看到”任何东西。
如果有一天您需要将数据库迁移到另一台服务器,则不需要将服务器转移logins到另一台服务器,您包含的数据库已经包含所有用户,并且他们不会“孤立”,因为他们没有相应的登录名根本。