我可以使用OpenQuery
从SSMS查询ADSI:
SELECT *
FROM OpenQuery (
ADSI,
'SELECT displayName, telephoneNumber, mail
, sAMAccountName
, division
, brancheNumber
FROM ''LDAP://DC=mydomain,DC=com''
WHERE objectClass = ''Person''
AND objectCategory = ''User''
')
现在,我想在SSRS中使用它,它在本地工作正常。但是,在将报告部署到sharepoint站点后,它总是显示如下错误:
报告处理期间发生错误。 (rsProcessingAborted)
共享数据集'DataSet1'的执行失败。 (rsDataSetExecutionError)
数据集'DataSet1'的查询执行失败。 (rsErrorExecutingCommand)
无法执行查询“SELECT displayName,telephoneNumber,mail,sAMAccountName,division,brancheNumber FROM'LDAP:// mydomain,DC = com'WHERE objectClass ='Person'AND objectCategory ='User'”对OLE DB提供程序“ADsDSOObject”for链接服务器“ADSI”。
无法弄清楚原因。所以我尝试了另一种方法:使用sql作业运行openquery并将数据保存在表中。然而,无论我怎样尝试,都没有成功。有没有人这样做过?这是错误(在用户设置为mydomain \ admin时运行,在ADSI上,此帐户的本地登录设置为Impersonate,选择使用此安全上下文并将mydomain \ admin设置为远程登录(及其密码):
以用户身份执行:mydomain \ admin。拒绝访问远程服务器,因为当前的安全上下文不受信任。 [SQLSTATE 42000](错误15274)。步骤失败了。
如果我在sql job中删除“Run As User”,则错误为:
以用户身份执行:NT AUTHORITY \ NETWORK SERVICE。链接服务器“ADSI”的OLE DB提供程序“ADsDSOObject”报告错误。提供者指示用户没有执行操作的权限。 [SQLSTATE 42000](错误7399)准备查询时出现错误“SELECT sAMAccountName,mail,division,brancheNumber FROM'LDAP:// mydomain,DC = com'WHERE objectClass ='Person'AND objectCategory ='User'”for对链接服务器“ADSI”的OLE DB提供程序“ADsDSOObject”执行。 [SQLSTATE 42000](错误7321)。步骤失败了。
这样做的目的是使用AD中的属性为运行查询的用户查询SQL中的字段。有人有任何建议吗?
由于