有没有办法在32位运行时从另一个构建为“任何CPU”输出的项目运行SSIS包?

时间:2012-07-25 03:47:31

标签: ssis

我有一个SSIS包,我在其中从csv读取数据并将其转储到excel文件(.xls)。起初,它不起作用,我不得不将SSIS项目的64位运行时属性更改为false以使其工作。

我需要从另一个为“Any CPU”输出构建的Windows服务调用此包。当我这样做时,我得到相同的64位运行时错误,包失败。我无法将服务的运行时更改为x86 / x64。是否有一个解决方案,以便我可以告诉包它需要在服务的32位运行时执行?

2 个答案:

答案 0 :(得分:3)

尝试将此属性设置为false(在解决方案的属性上):

enter image description here

此外,还记得Dtexec,dtutil和SQL Server导入和导出向导都有64位和32位应用程序。请务必注意,如果您在32位环境中开发包并希望在64位环境中运行该包,则连接管理器需要符合64位。某些连接管理器(如Excel)仅在32位环境中工作。

答案 1 :(得分:0)

可以通过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;

或者通过Configuration \ Advanced属性中的SQL代理,您可以使用“以32位模式运行”复选框。