找出一个用户能够访问sql server中的数据库的windows组?

时间:2010-03-04 01:37:59

标签: sql-server permissions

有一个带有混合模式身份验证的SQL Server 2005数据库。

  • 其中,我们在服务器上有以下登录:our-domain \ developers-group-1和our-domain \ developers-group-2,它们是AD组。
  • 将our-domain \ developer-group-2添加到服务器上的sysadmin角色,其中该组的所有域用户都可以访问任何数据库,因为SQL Server隐含地将sysadmin角色映射到dbo用户每个数据库。
  • 有两个用户:our-domain \ good-user和our-domain \ bad-user

问题如下:良好用户和坏用户都具有完全相同的AD组成员身份。他们都是我们的域\ developers-group-1和我们的域\ developers-group-2的成员。好用户能够访问所有数据库,而坏用户则不能访问。坏用户可以登录,但他无法访问任何数据库。顺便说一下,我是好用户。

我如何找到原因?

这是我到目前为止所尝试的内容:

  • 当我print current_user时,我会dbo
  • 当我print system_user时,我会my-domain\good-user
  • 当我select * from fn_my_permissions(NULL, 'SERVER')时,我会看到权限。

  • 但如果execute as user='my-domain\good-user'; select * from fn_my_permissions(NULL, 'SERVER'),我看不到任何看守。

  • 当我这样做的时候,execute as user='my-domain\bad-user'; select * from fn_my_permissions(NULL, 'SERVER'),我看不到任何看法。

另外,我想知道是否有一个sql命令告诉我,“嘿!当前数据库用户能够访问这个数据库,因为他是一个这样的广告组成员,这是一个登录在这个数据库中映射到这样的用户“。

2 个答案:

答案 0 :(得分:0)

如果您在Management Studio中拥有相关权限,则不需要花费太长时间才能解决问题。听起来坏用户AD组在SQL Server中具有有限的权限。

您需要检查GUI中的安全性设置,并检查每个AD组的映射 - 单击数据库以查看它们对每个数据库的权限。

答案 1 :(得分:0)

您是否可能只是拥有隐式权限作为对象的创建者/所有者,但是AD组/角色或您的用户没有明确的权限?