背景
我已经实现了一个从磁盘执行 SSIS 包的 asp.net Web 应用程序。这在调试中从 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。我不确定这个,我需要数据库服务器和Web服务器上的驱动程序吗?此外,我需要让数据库管理员打开他们可能无法接受的临时查询。这是我在本地工作的驱动程序,但它已经以原始方式在本地工作了.. http://blog.codefluententities.com/2011/01/20/microsoft-access-database-engine-2010-redistributable/
我没有提到的任何其他修复,这些看起来像是粗略的黑客攻击..?