我在通过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读取权限。
答案 0 :(得分:0)
事实证明,在我的情况下,问题是用户是对数据库具有DENIED读取权限的Active Directory组的成员。
更好(与问题更相关)信息(信用卡@Kodak):
How can I obtain an Active Directory Group name from a SQL Server stored SID?