SSIS 和 64 位 Microsoft Access 数据库引擎

问题描述 投票:0回答:4

我们的开发服务器有 SQL Server 2008 R2 64 位和 SSIS。为了能够直接从 T-SQL 导入 XLSX 文件(通过

OPENROWSET
),我们在开发服务器上安装了
Microsoft Access Database Engine Redistributable 64-bit
。服务器已经安装了 32 位版本,因此我们使用 /passive 开关安装它。

自从这样做以来,我们现有的软件包就失败了。其中一位报道

该步骤没有生成任何输出。返回值未知。 进程退出代码为-1066598274。该步骤失败。

只是想知道是否有其他人已成功配置他们的服务器,以便能够使用

OPENROWSET
到 XLSX 文件,并且在同一台服务器上也有 SSIS,或者是否有人知道此配置是否可行?

编辑: 我应该补充一点,失败的包是从 SQL 代理作业运行的。当我通过 SQL Server Management Studio 连接到服务器的 Integration Services Manager 并运行该包(通过导航到该包,右键单击它并选择“运行包”)时,它会成功执行。

sql-server ssis sql-server-2008-r2 aceoledb
4个回答
2
投票

就我个人而言,我已经放弃了尝试支持这种情况 - 我认为“/passive”安装是一种黑客行为,实际上不起作用,并且通常会破坏您安装的其他 ADE。我会完全卸载 ADE,然后只重新安装 32 位。然后,我将强制通过 SQL Agent 运行的所有包以 32 位执行(如 Brian 所描述)。

遵循此过程给您带来调试问题的希望,因为您可以在 Visual Studio 中打开包,并且它将使用相同的 32 位驱动程序。从 SSMS(也是 32 位)执行时,您还将使用一致的驱动程序。

是的,可能会影响性能,但 SSIS 性能通常在某种程度上受到 I/O 或网络速度的限制,而不仅仅是纯粹的引擎吞吐量。


0
投票

是的,这是可能的。您必须指定在作业步骤中使用 32 位运行时。打开运行 SSIS 包之一的每个作业步骤,然后单击“执行选项”。选中底部的“使用 32 位运行时”框。


0
投票

我有“该步骤没有生成任何输出。返回值未知。进程退出代码为-1066598274。该步骤也失败”。
我为自己找到了解决方法:我从使用

xlsx
切换到
xls
,并且不再出现错误。


0
投票

这已经很旧了,但我确实找到了一个非常简单的错误解决方案。 /passive 似乎给人们带来了问题,因为 dtexec.exe 有多个版本,您只需要找到有效的版本即可。我做了以下事情:

dtexec.exe 的每个版本都对应于 SSIS 的特定版本。升级 SQL Server 后,确保使用与 SSIS 包兼容的 dtexec.exe 版本至关重要。以下是识别和使用正确版本的方法:

  1. 导航到 SQL Server 安装目录:通常位于 C:\Program Files (x86)\Microsoft SQL Server。在此目录中,您将找到以不同版本的 SQL Server 命名的子文件夹(例如,对于 SQL Server 2022,为 100、110、120、130、140、150 和 160)。

  2. 找到 dtexec.exe:在每个版本的文件夹中,导航到 \DTS\Binn\ 目录。在这里,您将找到 dtexec.exe 可执行文件。该路径将如下所示:C:\Program Files (x86)\Microsoft SQL Serverp\DTS\Binn\dtexec.exe。

  3. 使用正确的 dtexec.exe 测试执行:使用命令行执行 SSIS 包,指定正确版本的 dtexec.exe 的完整路径。对于 SQL Server 2022,这可能是命令行中 160 文件夹中的那个:

    “C:\Program Files (x86)\Microsoft SQL Serverp\DTS\Binn\dtexec.exe”/文件 MyPackage.dtsx

如有必要,请在不同版本的文件夹中使用 dtexec.exe 重复此过程,直到找到适合您的软件包的版本。

© www.soinside.com 2019 - 2024. All rights reserved.