SSIS 2012 在 64 位系统上从 SSISDB 执行包

SSIS 2012 Execute Package from SSISDB on 64 bit system

我在执行我的程序包时遇到问题,因为我收到以下错误:

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.

我环顾四周,据我了解,这是因为 excel 或需要使用 32 位驱动程序在 32 位模式下进行访问连接。我知道在我的设计器中我可以转到属性并将 Run64BitRuntime 选项更改为 false。那不是问题。它在我的设计师中运行良好。我的问题是当 运行 我的包来自 SSISDB 时如何指定它?

如果设置 Run64BitRunTime 在 SSIS 设计器中有效,并且您在通过 SQL Job Agent 从 SSISDB 执行 ssis 包时遇到问题。

您应该在步骤属性下的 32 位运行时设置复选标记。

如果您通过 SSISDB 存储过程执行包,catalog.create_execution SP 有一个 @use32bitruntime 参数,它将 运行 您的包直接从 SSISDB 以 32 位模式运行。

--@use32bitruntime=True will enable 32-bit mode
Declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'32BitPackage.dtsx', @execution_id=@execution_id OUTPUT, 
@folder_name=N'Test Folder', @project_name=N'Test Project', @use32bitruntime=True, @reference_id=Null
Select @execution_id

--parameter/logging configuration
DECLARE @var0 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  
@object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0

--run package
EXEC [SSISDB].[catalog].[start_execution] @execution_id

GO