2010-01-06 318 views
0

我有一個SSIS包,它讀取Excel文件(數據流源)並使用OLEDB目標數據流項將數據傳輸到SQL Server。該包由.NET使用SSIS對象模型的應用程序。該程序包存儲在應用程序子文件夾內的文件系統中。SSIS對象模型 - 64位機器上的Excel連接管理器錯誤

該軟件包可以在我的開發/測試機器上正常工作。這些機器都有win2k3 32bit。 SSIS建立在BIDS 32位環境中。

當我DEPLOYE生產的機器上這個應用程序,它具有WIN2K3 64標準版我的錯誤已經發生

一個OLE DB錯誤。錯誤代碼:0x80040154。 OLE DB記錄可用。源:「Microsoft OLE DB服務組件」Hresult:0x80040154描述:「類未註冊」。 對連接管理器「Excel連接管理器」的AcquireConnection方法調用失敗,錯誤代碼爲0xC0202009。 組件「Excel源」(630)驗證失敗並返回錯誤代碼0xC020801C。

我已閱讀其他帖子,設置項目的Run64BitRuntime屬性(在設計時),解決了從BIDS運行時的問題。

如何通過SSIS對象模型設置此屬性。

下面是執行包

 
    _application = New Application() 
    _package = New Package() 
    _package = _application.LoadPackage(packageName, Nothing) 
    _updateResult = _package.Execute() 

感謝

馬蘇德

回答

2

的Run64BitRuntime屬性只適用於包裝的BIDS內部運行的代碼的一部分。在BIDS外跑步時無需設置此屬性。

我相信你的問題是,在代碼中運行時,程序包在64位模式下執行,但是Excel不支持這一點。爲了完成這項工作,您需要大膽推出32位版本的DTExec。

+0

謝謝歐文。 但我在這裏有點無知,因爲我不是通過命令行執行包,而是通過Package類的Execute方法調用它。 有沒有辦法強制班級在32位環境下運行。 還是必須重寫代碼才能使用命令行執行程序包?但這是我試圖避免的,因爲它很難獲得有關軟件包進度的信息。我將不得不依賴於SSIS日誌記錄。 任何幫助? 謝謝 – 2010-01-07 07:15:15

+0

我相信當連接到只支持32位連接的提供者時,你別無選擇,只能使用命令行實用程序並從日誌中檢索數據。請參閱此鏈接瞭解更多信息。 http://msdn.microsoft.com/en-us/library/ms141766.aspx – 2010-01-07 13:57:43

相關問題