我實現了一個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/
任何其他修復我沒有提到,這些似乎是粗糙的黑客..?
當然,你已經將32位與64位庫混合在一起(並且它們不能一起運行)。找出是什麼並糾正它。 – Aristos