sql-server-2005 - 从 sql server 2005 查询 AD

标签 sql-server-2005 active-directory ldap adsi

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

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

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

目前我正在本地 SQL Server 2005 实例上运行查询。我已经尝试将安全上下文更改为 1) Made Without...,2) made using the login's current...,以及 3) Be made using this security context: specifying my own domain account。这三个错误都一样。

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

有什么想法吗?

最佳答案

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

关于sql-server-2005 - 从 sql server 2005 查询 AD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/407671/

相关文章:

sql-server-2005 - SSIS 2005 : "Append rows to the destination table" is greyed out. 为什么?

sql - 删除并重新使用存储过程中的临时表

sql-server-2005 - SQL Server : Setting database mode to RESTRICTED_USER WITH ROLLBACK IMMEDIATE doesn't always drop all connections

active-directory - System.DirectoryServices 编译问题

Java - jndi ldap 慢速搜索

java - ldap中的别名是什么

sql - 选择某年/月内记录存在的天数

oracle - 使用 PLSQL 获取 LDAP 用户列表

php_ldap 克服 ssl 困难

c# - AD 中用户的 LDAP 查询带回计算机对象