背景
我已经实现了一个asp.net Web应用程序,它从磁盘执行SSIS包。这在调试时从visual studio运行时有效,但一旦发布到服务器,就会在下面的错误中抱怨64位SSIS。
我看过很多关于解决方案的帖子,但我不确定我的方案中最适合的解决方案。我可以完全访问Web服务器和asp.net c#应用程序代码,对此版本的数据库服务器进行有限访问。
错误: * SSIS错误代码DTS_E_OLEDB_EXCEL_NOT_SUPPORTED:64位版本的SSIS不支持Excel连接管理器,因为没有可用的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;
}
潜在决议(请帮助提出建议)
以32位进程运行SSIS(我该如何操作并在我的情况下工作?)
为excel / access安装64位驱动程序,并使用带有openrowset的sql存储过程来获取我的数据而不是SSIS。我不确定这个,我需要数据库服务器和Web服务器上的驱动程序吗?此外,我需要让数据库管理员打开他们可能不适合的即席查询。这是我在当地工作的司机,但后来它已经在原地工作了.. http://blog.codefluententities.com/2011/01/20/microsoft-access-database-engine-2010-redistributable/
我还没有提到任何其他修复,这看起来像粗糙的黑客......?
答案 0 :(得分:3)
它依赖于Excel驱动程序,默认情况下Excel驱动程序是32位。如果您在64位操作系统上尝试应用程序,那肯定会出错。
要解决此问题,请转到项目属性>调试>调试选项 并将 Run64bitruntime 设置为 False 。查看更多here。
答案 1 :(得分:3)
我的解决方案是以32位模式运行iis应用程序池。
Nopte在我的asp.net页面上工作之后,我认为这只能在托管该网站的服务器上的浏览器中运行。这是我的帖子,关于在任何点击此服务器的客户端上使用broswer工作:SSIS package from ASP.net does not work on client but does on server
答案 2 :(得分:2)
这取决于您执行包的方式,但有一个属性可以设置执行前强制32位运行时。在Integration Services目录(SSIS 2012)中,它在执行时的高级选项卡下有一个32位运行时复选框。
作为Excel,您将不得不以32位运行,因为不支持64位Excel驱动程序。这可以帮助您SSIS 32 and 64 Bit - Todd McDermid