【问题标题】:How to check SQL Server SID vs Active Directory SID如何检查 SQL Server SID 与 Active Directory SID
【发布时间】: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


【解决方案1】:

事实证明,在我的情况下,问题是用户是 Active Directory 组的成员,该组的数据库读取权限被拒绝。

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

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

【讨论】:

    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 2011-08-16
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多