SSIS 包失败并出现错误 "If 64-bit driver not installed, run in 32-bit mode"

SSIS package fails with error "If 64-bit driver not installed, run in 32-bit mode"

我在尝试从 SSMS 的集成服务目录中 运行 包时收到以下错误。我将 64BitRuntime 选项更改为 FALSE 但它仍然不起作用。下面的错误后面是无法连接到我的 Excel connection manager 的错误。有什么建议吗?

Package Error: The requested OLE DB provider Microsoft.Jet.OLEDB 4.0 is not registered. If the 64-bit driver is not installed, run the package in 32-bit mode. Error code: 0x00000000

使用 SSIS 中内置的 excel 连接管理器,程序包需要 运行 在 32 位模式下。切换这个:

64BitRuntime option to FALSE

只允许 SSDT 运行 32 位模式的包,但它不会影响它在部署后 运行 的方式。从 SSMS 以 32 位模式 运行 它:

  • 如果您右键单击集成服务目录中的包并点击执行,请转到对话框的高级选项卡并选中 32 位 运行时间。
  • 如果您通过 SQL 代理作业执行它。在该步骤中,转到配置 > 高级并检查 32 位 运行time.

您必须安装 Microsoft Access Database Engine 2010 Redistributable
64BitRuntime 选项设置为 FALSE

您可以从以下link获取:

可以在以下 link 中找到更多信息和详细信息:

如果您从作业中执行 SSIS 程序包,作业配置中有一个选项复选框 "enable 32 bit"。

如果您从 BIDS 或 SSDT 执行 SSIS 包,请转到项目属性=>配置 => 调试 => 将 64BitRuntime 从 "True" 更改为 "False",因为它被设置为 True默认。

您正在尝试 运行 SSISDB 目录中的 SSIS 包并且需要它处于 32 位模式。

此类的 TSQL 如下所示

DECLARE @execution_id bigint;
EXEC SSISDB.catalog.create_execution
    @package_name = N'Legacy_DataExport.dtsx'
,   @execution_id = @execution_id OUTPUT
,   @folder_name = N'Legacy_DataExport'
,   @project_name = N'Legacy_DataExport'
,   @use32bitruntime = True
,   @reference_id = NULL;
SELECT
    @execution_id;
DECLARE @var0 smallint = 1;
EXEC SSISDB.catalog.set_execution_parameter_value
    @execution_id
,   @object_type = 50
,   @parameter_name = N'LOGGING_LEVEL'
,   @parameter_value = @var0;
EXEC SSISDB.catalog.start_execution @execution_id;
GO

值得注意的是我们指定 @use32bitruntime = True

的第一个 EXEC 的倒数第二个参数

也就是说,请 运行 包 Legacy_DataExport.dtsx 可以在项目中找到 Legacy_DataExport 可以在文件夹 Legacy_DataExport 中找到使用 32 位 运行时间.

从UI的角度来看,好像

SSMS 中的点击路径为

  • 展开“管理”下的“集成服务目录”节点
  • 展开“SSISDB”的唯一选项
  • 展开项目所在的文件夹 - 在我的例子中是“Legacy_DataExport”
  • 展开“项目”节点
  • 展开你的实际项目节点——我的项目也叫“Legacy_DataExport”
  • 展开“包”
  • 找到你的包裹,我的例子还是“Legacy_DataExport.dtsx”,右击它然后select Execute...