2012-11-19 83 views
2

背景SSIS執行64位出類拔萃

我實現了一個asp.net web應用程序,從磁盤執行的SSIS包。在調試時從visual studio運行時,這種方式起作用,但一旦發佈到服務器,就會按照以下錯誤報告64位SSIS。

我見過很多關於解決方案的帖子,但我不確定我的場景中最適合的解決方案。我可以完全訪問Web服務器和asp.net c#應用程序代碼,對此版本的數據庫服務器進行有限的訪問。

錯誤: * SSIS錯誤代碼DTS_E_OLEDB_EXCEL_NOT_SUPPORTED:Excel的連接管理器沒有在SSIS的64位版本的支持,因爲沒有OLE DB提供程序可用。 SSIS錯誤代碼DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER *

C#代碼

 string pkgLocation; 
     Package pkg; 
     Application app; 
     DTSExecResult pkgResults; 
     string result = string.Empty; 
     string dtsErrors = string.Empty; 

     try 
     { 
      pkgLocation = packagePath; 
      app = new Application(); 
      pkg = app.LoadPackage(pkgLocation, null); 
      pkgResults = pkg.Execute(); 

      //Add any errors to string for notifying user 
      foreach (DtsError local_DtsError in pkg.Errors) 
       dtsErrors += " " + local_DtsError.Description; 

      result = pkgResults.ToString(); 
     } 
     catch (Exception exception) 
     { 
      result = exception.Message; 
     } 

可能的解決方案(請爲您推薦)

  • 運行SSIS的32位進程(我如何做到這一點它會在我的情況下工作嗎?)

  • 爲excel/access安裝64位驅動程序,並使用openrowset的sql存儲過程來獲取我的數據而不是SSIS。我不確定這一點,我需要數據庫服務器和Web服務器上的驅動程序嗎?此外,我需要讓數據庫管理員打開臨時查詢,他們可能不會。這裏是我在本地工作的驅動程序,但後來它已經在本地工作原來的方式.. http://blog.codefluententities.com/2011/01/20/microsoft-access-database-engine-2010-redistributable/

  • 任何其他修復我沒有提到,這些似乎是粗糙的黑客..?

+0

當然,你已經將32位與64位庫混合在一起(並且它們不能一起運行)。找出是什麼並糾正它。 – Aristos

回答

3

我的解決方案是以32位模式運行iis應用程序池。

Nopte,我得到這個在我的asp.net頁面工作後,我重新聲明,這隻能在託管該網站的服務器上的瀏覽器內工作。這裏是我的帖子,涉及到在任何客戶端點擊此服務器時,它都可以通過瀏覽器運行:SSIS package from ASP.net does not work on client but does on server

2

它取決於你如何執行你的包,但是有一個屬性可以設置預執行強制32位運行時。在Integration Services目錄(SSIS 2012)中,在運行32位運行時複選框時,它位於高級選項卡下。

enter image description here

正如其Excel中,你將不得不爲32位的有64位Excel驅動程序不支持運行。這可能會幫助你SSIS 32 and 64 Bit - Todd McDermid

picture source

3

這取決於Excel驅動程序,默認情況下,Excel驅動程序爲32位。如果您在64位操作系統上嘗試應用程序,那麼它肯定會引發錯誤。

要解決此去項目屬性>調試>調試選項 並設置Run64bitruntime。查看更多here

相關問題