我有一个 SSIS 包,我在其中从 csv 读取数据并将其转储到 excel 文件 (.xls)。起初,它不起作用,我不得不将 SSIS 项目的 64 位运行时属性更改为 false 以使其工作。
我需要从另一个构建为“任何 CPU”输出的 Windows 服务调用这个包。当我这样做时,我得到相同的 64 位运行时错误并且包失败。我无法将服务的运行时间更改为 x86/x64。是否有解决方案,以便我可以告诉包它需要在服务的 32 位运行时中执行?
我有一个 SSIS 包,我在其中从 csv 读取数据并将其转储到 excel 文件 (.xls)。起初,它不起作用,我不得不将 SSIS 项目的 64 位运行时属性更改为 false 以使其工作。
我需要从另一个构建为“任何 CPU”输出的 Windows 服务调用这个包。当我这样做时,我得到相同的 64 位运行时错误并且包失败。我无法将服务的运行时间更改为 x86/x64。是否有解决方案,以便我可以告诉包它需要在服务的 32 位运行时中执行?
尝试将此属性设置为 false(它在解决方案的属性上):
此外,请记住 Dtexec、dtutil 和 SQL Server 导入和导出向导都有 64 位和 32 位应用程序。请务必注意,如果您在 32 位环境中开发包并希望在 64 位环境中运行该包,则连接管理器需要兼容 64 位。某些连接管理器(例如 Excel)只能在 32 位环境中工作。
可以通过 EXEC 命令强制执行 32 位:
EXEC SSISDB.catalog.create_execution
@folder_name = @p_yourFolder,
@project_name = @p_yourProject,
@package_name = @p_yourProcess,
@reference_id = @v_yourReferenceId,
@use32bitruntime = 1, --To force 32 bit runtime
@execution_id = @r_SSISDB_ExecutionID OUTPUT;
或者通过配置\高级属性中的 SQL 代理,您可以在其中有一个可用的«以 32 位模式运行»复选框。