使用T-SQL查询Active Directory

时间:2016-12-08 16:03:12

标签: sql sql-server tsql active-directory linked-server

尝试过:

EXEC master.dbo.sp_addlinkedserver
        @server = N'ADSI',
        @srvproduct=N'Active Directory Services',
        @provider=N'ADsDSOObject',
        @datasrc=N'server_name.your_domain.com'

EXEC master.dbo.sp_addlinkedsrvlogin 
        @rmtsrvname=N'ADSI',
        @useself=N'False',
        @locallogin=NULL,
        @rmtuser=N'your_domain\domain_user',
        @rmtpassword='********'

SELECT * 
FROM OPENQUERY (ADSI, 'SELECT *
                       FROM ''LDAP://DC=your_domain,DC=com''')

出现此错误:

  

Msg 7321,Level 16,State 2,Line 1
  准备查询“SELECT * FROM'LDAP:// DC = your_domain,DC = com'”时发生错误,以便对链接服务器“ADSI”的OLE DB提供程序“ADsDSOObject”执行。

我已经确认我的,并且SQL Server服务域帐户具有对AD的读访问权限,并且选择了ADsDSOObject提供程序上的“允许进程”。

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

我能找到的每个例子都有:LDAP:// DC = your_domain,DC = com作为语法。对于我们的服务器(也许还有其他服务器)来说,它是:LDAP:// DC = your_domain,DC = internal

根据某人的建议,我使用Softerra LDAP浏览器(免费)并打开服务器,点击顶部节点,发现可分辨名称条目列为:DC = your_domain,DC = internal

完成更改后,我可以看到AD数据。