从SQL作业查询Active Directory属性?

时间:2013-10-17 23:36:05

标签: sql sql-server sql-server-2008 reporting-services active-directory

我可以使用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中的字段。有人有任何建议吗?

由于

0 个答案:

没有答案