如何检查SQL Server SID与Active Directory SID

时间:2012-06-06 22:47:42

标签: sql-server sql-server-2000

我在通过Windows身份验证登录 SQL Server 2000 数据库时出现问题,其中通过Active Directory组在数据库级别授予访问权限,该用户是该组的成员的。

我可以通过:whoami / groups查看用户的AD群组成员资格,并参阅:

somedomain\SalesDB-RO                   Group            S-1-5-21-2172273820-3134075794-738947201-31792  Mandatory group, Enabled by default, Enabled group             
somedomain\SalesDB-RO                   Group            S-1-5-21-923798017-1667202166-518595180-7612    Mandatory group, Enabled by default, Enabled group             

由于(以某种方式)Active Directory SID历史记录的性质,有两个条目。

现在,我可以查看数据库(使用SSMS,使用其他帐户)并看到'SalesDB-RO'确实在数据库中具有db_datareader权限,但用户仍然无法登录。我想知道'SalesDB-RO'组在文本上是否相同,但在SQL Server数据库中可能有不同的SID。

如何查看分配给SQL Server中“SalesDB-RO”组的SID? (我个人没有SysAdmin权限,但可以让某人执行任何必要的命令。)

次要问题:
在另一个我有sysadmin权限的SQL Server(2008)实例上,我看到SID的格式如下:

0x0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF01234567

....而来自AD,他们的形式是:

S-1-5-21-2172273820-3134075794-738947201-31792

有没有办法获得SID的可比较版本?

更新

事实证明问题是用户是Active Directory组的成员,该组对数据库具有DENIED读取权限。

1 个答案:

答案 0 :(得分:0)

事实证明,在我的情况下,问题是用户是对数据库具有DENIED读取权限的Active Directory组的成员。

更好(与问题更相关)信息(信用卡@Kodak):

How can I obtain an Active Directory Group name from a SQL Server stored SID?