2009-02-10 40 views
1

我可以設置使用目錄服務OLE提供程序並指向我們的一個域控制器的連接管理器。然後,在數據流區域中,我創建一個OLE DB源並將數據訪問模式設置爲「SQL命令」。如何在SQL Server Integration Services項目中使用OLE DB提供程序用於目錄服務?

然後我用這個查詢從Active Directory中提取數據:

Select employeeid, sAMaccountName 
From 'LDAP://MyCompany.com' 
Where objectClass = 'user' 
    and objectClass = 'Person' 
    and objectClass <> 'Computer' 

如果我解析查詢,它說,它正確地解析。如果我打開查詢生成器,它會給我這個錯誤。

Error in FROM clause: near 'WHERE'. Unable to parse query text.

然後單擊確定,然後打開查詢生成器,我可以成功運行查詢並從AD獲得結果。然而,當我嘗試單擊OK應用更改,或進入視圖的列,我得到這個錯誤:

Error at Data Flow Task [OLE DB Source 1 [941]]: An OLE DB error has occurred. Error code: 0x80040E21.

ADDITIONAL INFORMATION: Exception from HRESULT: 0xC0202009 (Microsoft.SqlServer.DTSPipelineWrap)

我自己也嘗試設立使用「SQL命令從變量」接入模式的DB源。我設置了一個字符串變量,其值爲查詢...但這只是給了我相同的錯誤。

由於錯誤是如此普遍,我似乎無法找到什麼是實際錯誤的描述。

有誰知道如何成功使用Microsoft Direcotry Services的OLE DB提供程序?和/或是否有人知道在SSIS內部執行此操作的更好方法?

回答

4

假設你命名的鏈接服務器(您的Active Directory OLE DB提供程序) 「ADSI」,這裏的基本上是你需要的東西:

SELECT samAccountName, 
     employeeID 
FROM OPENQUERY(ADSI, 
    'SELECT samAccountName, employeeID 
    FROM ''LDAP://MyCompany.com'' 
    WHERE objectClass=''Person'' 
    AND objectClass = ''User'' 
    AND NOT objectClass = ''Computer''') 
相關問題