我在通过 Windows 身份验证登录SQL Server 2000数据库时遇到问题,其中已通过 Active Directory 组授予数据库级别的访问权限,相关用户是该组的成员。
我可以通过以下方式检查用户的 AD 组成员身份: whoami /groups 并查看:
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?(我个人没有系统管理员权限,但可以找人执行任何必要的命令)。
第二个问题:
在我确实拥有系统管理员权限的另一个 SQL Server (2008) 实例上,我看到 SID 的形式为:
0x0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF01234567
....而从 AD 他们是在形式:
S-1-5-21-2172273820-3134075794-738947201-31792
有没有办法获得 SID 的可比较版本?
更新
事实证明,问题在于用户是 Active Directory 组的成员,该组的数据库读取权限被拒绝。