【发布时间】:2017-04-13 22:12:10
【问题描述】:
我在通过 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? (我个人没有 SysAdmin 权限,但可以让有权限的人执行任何必要的命令)。
第二个问题:
在我拥有系统管理员权限的另一个 SQL Server (2008) 实例上,我看到 SID 的格式如下:
0x0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF01234567
....而在 AD 中,它们的格式为:
S-1-5-21-2172273820-3134075794-738947201-31792
有没有办法获得 SID 的可比较版本?
更新
事实证明,问题在于用户是 Active Directory 组的成员,该组的数据库读取权限被拒绝。
【问题讨论】:
-
它并没有完全回答您的问题,但您正在尝试解决 AD 组无法访问数据库的原因。您是否检查过 AD 组设置为安全组(而不是通讯组)?我知道这曾经让我感到困惑。
-
@Ben:它似乎对其他人(包括我自己)有用,所以不要认为这是问题
标签: sql-server sql-server-2000