当前位置:  开发笔记 > 编程语言 > 正文

从sql server 2005查询AD

如何解决《从sqlserver2005查询AD》经验,为你挑选了1个好方法。

我试图从SQL Server 2005中通过ldap查询AD,但得到以下错误:

消息7321,级别16,状态2,行1准备查询时出错"SELECT NAME,MAIL FROM"LDAP:/// CN = foo,CN = Users,DC = bar,DC = com""用于执行用于链接服务器"ADSI"的OLE DB提供程序"ADsDSOObject".

这是在执行以下存储的proc之后:
exec sp_addlinkedserver'ADSI','Active Directory Services 2.5','ADsDSOObject','adsdatasource'

目前我正在我的本地SQL Server 2005实例上运行查询.我已经尝试将安全上下文更改为1)Made Without ...,2)使用登录的当前...,以及3)使用此安全上下文:指定我自己的域帐户.这三个都有同样的错误.

不确定是否重要,但"bar"(参见上面的ldap查询)不是我的机器(本地sql服务器实例)或ldap服务器的域.

有任何想法吗?



1> 小智..:

主要问题是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链接服务器上安全属性选项卡下使用的帐户.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有