如何查询哪个Active Directory帐户与SQL Server用户关联?

时间:2011-07-26 13:25:40

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

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

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

选择论坛后,我始终将登录名字段作为AD群组的名称以供参考。

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

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

- 编辑 -

感谢回应者的回答。你已经回答了这个问题,然而,它又提出了另一个问题posted here

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您可以检查您在系统上定义的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安全性群组之间分开....