从asp.net错误64位excel SSIS执行

背景

我已经实现了一个从磁盘执行SSIS包的asp.net web应用程序。 这在从debug studio运行在debugging时,但一旦释放到服务器抱怨大约64位SSIS下面的错误。

我已经看到了很多关于解决scheme的文章,但我不确定我的scheme中最适合的解决scheme。 我可以完全访问Web服务器和asp.net c#应用程序代码,在此版本的数据库服务器上进行有限的访问。

错误: * SSIS错误代码DTS_E_OLEDB_EXCEL_NOT_SUPPORTED:在64位版本的SSIS中不支持Excel连接pipe理器,因为没有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; } 

潜在的决议(请帮助build议)

  • 运行SSIS作为一个32位的过程(我该怎么做,并将在我的情况下工作?)

  • 安装64位驱动程序的Excel /访问和使用openrowset SQL存储过程来获取我的数据,而不是SSIS。 我不知道这个,我需要在数据库服务器和Web服务器上的驱动程序? 另外,我需要让数据库pipe理员打开临时查询,他们可能不会好。 这里是我在本地工作的驱动程序,但它已经在本地工作原来的方式.. http://blog.codefluententities.com/2011/01/20/microsoft-access-database-engine-2010-redistributable/

  • 任何其他修复我没有提到,这些似乎是粗糙的黑客..?

这取决于Excel驱动程序,默认的Excel驱动程序是32位。 如果你正在64位操作系统上尝试你的应用程序,那么肯定会抛出一个错误。

要解决此问题,请转到“ 项目属性”>“debugging”>“debugging选项”,然后将“ Run64bitruntime”设置为“ False” 。 在这里看到更多。

我的解决scheme是以32位模式运行iis应用程序池。

Nopte,我得到这个在我的asp.net页面工作后,我realsised,这只能在托pipe该网站的服务器上的浏览器。 这里是我的post相关的从任何客户端点击此服务器上的大宗工作: 从ASP.net的SSIS包不起作用的客户端,但在服务器上

这取决于你如何执行你的包,但是有一个属性可以设置预执行强制32位运行时。 在Integration Services目录(SSIS 2012)中,在执行32位运行时checkbox的情况下,它位于高级选项卡下。

在这里输入图像描述

作为Excel,你将不得不以32位运行,因为那里不支持64位Excel驱动。 这可能会帮助你SSIS 32和64位 – 托德·麦克德米德

图片来源