【问题标题】:How can I query an which Active Directory account is associated with a SQL Server user?如何查询与 SQL Server 用户关联的 Active Directory 帐户?
【发布时间】:2011-07-26 13:25:40
【问题描述】:

我有两个主要使用的 SQL Server(一个 2005 实例和一个 2000。)我的权限结构是这样工作的--

首先我创建一个 Active Directory 组,然后将所有必要的用户添加到其中。然后,我转到 SQL-MS,并通过选择 Windows 身份验证选项添加用户,然后选择我刚刚创建的 AD 组。与本文无关,但我随后将新登录帐户与所有必要的数据表、视图和 SP 相关联。

选择组后,我一直将登录名字段作为AD组的名称,以供参考。

最近我重命名了一个 AD 组。数据库继续工作,并且通过某种方式,SQL Server 知道与 SQL 登录关联的 AD 组。我的问题是 SQL Server 中的登录名没有更新,所以我不知道哪个 AD 组与 SQL Server 登录帐户相关联!

是否有我可以运行的查询,或者是否有隐藏的设置可以帮助我发现哪个 AD 组与此帐户相关联?

-- 编辑--

感谢回复者的回答。你已经回答了这个问题,但是,它传播了另一个问题posted here

【问题讨论】:

  • 到目前为止,有两个适用于 2005 年的好答案。我已经更新了我的问题以反映我需要一个适用于 SQL 2005 和 SQL 2000 的解决方案。第一个为这两种情况提供解决方案的解决方案得到了解决方案检查。
  • 正如我所说 - 2000 年的整个安全子系统完全不同,所以我非常怀疑是否会有任何解决方案适用于 2000 以及 2005/2008/2008 R2 版本。 ..

标签: sql-server security sql-server-2005 active-directory sql-server-2000


【解决方案1】:

AD 组和 SQL Server 登录之间的映射正在完成using the group's SID。您可以使用sys.server_principals 查看登录列表及其 SID。如果要更改现有登录名,可以使用ALTER LOGIN

【讨论】:

  • EDIT--是否有与 SQL 2000 的 sys.server_principals 表等效的表?我只是尝试查询它,但被告知它不存在……但是,相同的查询在我的 SQL 2005 服务器中有效。
【解决方案2】:

您可以检查您在系统上定义为登录的 Windows 组;

SELECT *
FROM sys.server_principals
WHERE type_desc = 'WINDOWS_GROUP'

这仅适用于 SQL Server 2005 及更高版本。

但您不会获得实际的 AD 组名称 - 只有该组的“SID”......

整个安全系统在 SQL Server 2000 上非常不同 - 我认为对于那个古老的恐龙没有 1:1 等效查询 :-) 我能想到的最好的方法是:

SELECT *
FROM master.dbo.sysxlogins
WHERE password IS NULL 
  AND name IS NOT null

但不幸的是,我无法在此处区分 Windows 用户 和 Windows 安全 ....

【讨论】:

  • 请在妮可的回答中查看我的问题。
  • “升级时间”。是的,我同意。然而,企业的“神”总是迁移缓慢,这就是为什么我们仍然坚持使用 Windows XP,而且我相信还会再坚持 3 年(实际上!)
猜你喜欢
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多