0

我有一个用 C# 编写的 Windows 服务,它调用用 SSIS 2008R2 编写的 SSIS 包。包连接到 Excel 电子表格。它执行如下:

Application app = new Application();
Package pkg = app.LoadPackage(ConfigurationManager.AppSettings["SsisPkgLoc"].ToString(), null);
DTSExecResult pkgResults = pkg.Execute();

当我安装此服务并且包运行时,包失败

SSIS Error Code DTS_E_OLEDB_EXCEL_NOT_SUPPORTED: The Excel Connection Manager is not supported in the 64-bit version of SSIS, as no OLE DB provider is available.

但是,如果我从 WPF 表单调用相同的代码,它会按预期执行。我知道从 SSIS 到 Excel 的 64 位与 32 位连接存在问题。令我困惑的是,两种方法都调用了相同的代码。

知道为什么作为 Windows 服务运行可能会尝试使用不同的驱动程序/失败吗?

4

1 回答 1

2

您的服务需要以 x86 架构为目标。目前它在 64 位模式下运行,并且没有可用的 Excel 驱动程序。当它启动应用程序时,它会拉入与服务的其余部分相同架构的程序集,并且由于它位于 64 位空间中,因此它会失败。

于 2013-10-02T19:56:13.863 回答