我不确定我想要什么是可能的,但是我们现在就去。
在工作中,我们有一个专用的SQL Server 2008盒子来托pipe我们需要运行的各种数据库。 我们有一个远程的人(让我们称他们为Bob),他需要托pipe一个数据库。 我被要求限制Bob访问SQL框,但给他足够的权限来控制他的数据库。
目前,我已经为Bob设置了一个SQLlogin名,并使其成为Bob数据库的dbowner,并且不能访问其他任何东西。 当我loginBob的SQLlogin到SSMS时,我可以看到所有其他数据库,但只能访问Bob的。 但是,我可以访问并使用主数据库,这对我来说并不感到温暖和模糊。
有没有办法阻止Bob看到其他数据库的名称,并阻止他访问主数据库?
在SQL 2005和2008中,授予/删除查看数据库权限的function被引入,并被称为“查看任何数据库”
http://msdn.microsoft.com/en-us/library/ms189077.aspx
你只需要确保你想限制的login没有直接或间接(虽然组成员)的权利,这台服务器的权利。
我不确定是否禁用了查看数据库的能力,但是对于主数据库pipe理员可能(a)有明确的权限(b)具有服务器angular色或者(c)正在以“guest”的身份访问。 通过查看Bob的服务器login,检查一个&b应该很容易。 通过在作为Boblogin时在master中运行“select user_name()”来检查c。