我们在SQLS 2008R2数据库中有一个预定作业,它根据用户的用户名(sAMAccountName)直接查询旧数据库的用户电子邮件地址。
我想直接查询AD,所以我可以打破这两个系统之间的联系,但是尝试了在每个页面上显示的相同建议,我无法让它工作,我想要么它找不到DC或传递身份验证/安全性无效。我们在所有计算机都属于的单个域上使用Windows身份验证,数据库作为网络服务帐户运行。
查看以下内容:
让我们说我们的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传递问题,我尝试直接在数据库服务器上运行查询并得到同样的错误:(
我用Google搜索了didn't find much的错误消息,除了一条建议“检查链接服务器(ADSI)是否允许远程访问”的评论外,没有任何帮助。 ,我不确定这意味着什么?知识库文章没有提到AD服务器所需的其他配置???
有人能建议如何正确地做到这一点吗?我觉得我错过了一些明显的东西(例如,我没有在任何地方配置DC主机)但我不知道是什么......
喝彩!
答案 0 :(得分:2)
它看起来像权限错误。您是如何为链接服务器安排定义身份验证设置的?将其作为域管理员帐户运行,看看它是否有效。