背景
我已经实现了一个 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;
}
潜在的解决方案(请提供建议)
将 SSIS 作为 32 位进程运行(我该如何执行此操作以及它是否适合我的情况?)
为 excel/access 安装 64 位驱动程序,并使用带有 openrowset 的 sql 存储过程来获取我的数据而不是 SSIS。我不确定这一点,我需要数据库服务器和网络服务器上的驱动程序吗?另外,我需要让数据库管理员打开他们可能不同意的临时查询。这是我在本地工作的驱动程序,但随后它已经以原始方式在本地工作了.. http://blog.codefluententities.com/2011/01/20/microsoft-access-database-engine-2010-redistributable/
我没有提到的任何其他修复,这些看起来像是粗暴的黑客..?
最佳答案
这取决于Excel驱动程序,默认情况下Excel驱动程序是32位的。如果您在 64 位操作系统上尝试您的应用程序,那么它肯定会抛出错误。
要解决此问题,请转到“项目属性 > 调试 > 调试选项” 并将 Run64bitruntime 设置为 False。查看更多here .
关于asp.net - 从asp.net执行SSIS错误64位excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13448786/