【发布时间】:2011-06-20 06:52:40
【问题描述】:
我们在 SQLS 2008R2 数据库中有一个计划作业,该作业根据用户名 (sAMAccountName) 直接查询旧版数据库以获取用户电子邮件地址。
我想直接查询 AD,这样我就可以断开这两个系统之间的链接,但是尝试了每个页面上显示的相同建议后,我无法让它工作,我认为要么它没有找到DC 或直通身份验证/安全性不起作用。我们在所有机器所属的单个域上使用 Windows 身份验证,数据库作为网络服务帐户运行。
看了以下内容:
- Querying Active Directory from Sql Server 2005
- Querying Active Directory from Sql Server 2008
- Create a SQL Server View of your AD Users
- Distributed Query (MS KB article)
假设我们的一个 DC(我们有几个)称为“fredDC”,ldap 根是“DC=fred,DC=com”。
所以我链接了服务器(这里没有提到主机名,是通过魔法找到的?)
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 'ADSDSOObject', 'adsdatasource'
然后我尝试运行查询:
SELECT sAMAccountName
FROM OPENQUERY(ADSI, 'SELECT sAMAccountName
FROM ''LDAP://DC=fred,DC=com''
WHERE objectCategory = ''Person''
AND objectClass = ''user'' ')
并得到以下错误:
Msg 7321, Level 16, State 2, Line 1
An error occurred while preparing the query "SELECT sAMAccountName
FROM 'LDAP://DC=fred,DC=com'
WHERE objectCategory = 'Person'
AND objectClass = 'user' for execution against OLE DB provider "ADSDSOObject" for linked server "ADSI".
如果是 Kerberos 传递问题,我尝试直接在 DB 服务器上运行查询并得到相同的错误:(
我在错误消息上用谷歌搜索和didn'tfindmuch,除了一条建议“检查链接服务器 (ADSI) 是否允许远程访问”的评论之外,没有什么有用的,我不是确定那是什么意思?知识库文章提到 AD 服务器不需要其他配置???
谁能建议如何正确执行此操作?我觉得我遗漏了一些明显的东西(例如,我没有在任何地方配置 DC 主机)但我不知道是什么......
干杯!
【问题讨论】:
-
看起来像是权限错误。您如何定义链接服务器安排的身份验证设置?以域管理员帐户运行它,看看它是否有效。
-
o_O 现在可以完美运行。哇,如果文档提到需要将链接创建为域管理员才能使链接正常工作,那就太好了.. GAH!你能回答这个问题,我会接受你的回答吗?
标签: sql-server-2008 active-directory ldap