我正在尝试从SQL Server 2005中通过ldap查询AD,但收到以下错误:
Msg 7321,Level 16,State 2,Line 1 准备查询“SELECT NAME,MAIL FROM”LDAP时发生错误:/// CN = foo,CN = Users,DC = bar,DC = com“”用于针对链接服务器“ADSI”的OLE DB提供程序“ADsDSOObject”执行”
这是在执行以下存储过程之后:
exec sp_addlinkedserver'ADSI','Active Directory Services 2.5','ADsDSOObject','adsdatasource'
目前我正在本地SQL Server 2005实例上运行查询。我已经尝试将安全上下文更改为1)Made Without ...,2)使用登录的当前...,和3)使用此安全上下文:指定我自己的域帐户。三者都有相同的错误。
不确定是否重要,但“bar”(参见上面的ldap查询)不是我的机器(本地sql server实例)或ldap服务器的域。
有什么想法吗?
答案 0 :(得分:5)
主要问题是LDAP查询的双引号需要加倍单引号。
LDAP查询可以包括服务器名称或IP和/或LDAP规范。
一些对我有用的查询:
SELECT * FROM OPENQUERY
(ADSI,'SELECT NAME FROM ''LDAP://*ldap.server.name*''')
SELECT * FROM OPENQUERY
(ADSI, 'SELECT name, sAMAccountName, distinguishedName
FROM ''LDAP://DC=*mycompany*, DC=*mytld*''
WHERE objectCategory = ''Person'' AND objectClass = ''user''')
SELECT * FROM OPENQUERY
(ADSI,'SELECT name, sAMAccountName, distinguishedName
FROM ''LDAP://*ldap.server.name*/OU=ITDept, OU=users, OU=DC, OU=Corporate, DC=*mycompany*, DC=*mytld*''
WHERE objectCategory = ''Person'' AND objectClass = ''user''')
再次......上面没有双引号......多个单引号。
ADSI需要注册/链接
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Service Interfaces', 'ADSDSOObject', 'adsdatasource'
如果您有权限问题,可以设置ADSI链接服务器上安全属性选项卡下使用的帐户。