当指向远程SSIS包时,是否有办法让dtexec工具在包完成运行之前不退出?
我的程序包运行成功,但dtexec报告的运行时间比SQL Server上“All Executions”报告中报告的实际持续时间短得多。 它打印消息:
To view the details for the execution, right-click on the Integration Services Catalog, and open the [All Executions] report
我的目标是在命令行上启动dtexec,然后运行依赖于程序包完成的其他代码。理想情况下,我希望dtexec在程序包完成运行之前不要退出。
这可能吗?
答案 0 :(得分:4)
您正在寻找SYNCHRONIZED参数
要使我的链接只回答链接和代码回答,这里是Phil的代码用于使用TSQL
DECLARE @execution_id BIGINT = 0;
-- Create a package execution
EXEC [SSISDB].[catalog].[create_execution]
@package_name=N'Package.dtsx',
@execution_id=@execution_id OUTPUT,
@folder_name=N'PhilsTest',
@project_name=N'Demo',
@use32bitruntime=False;
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
@execution_id,
@object_type=50,
@parameter_name=N'SYNCHRONIZED',
@parameter_value=1; -- true
-- Start the package
EXEC [SSISDB].[catalog].[start_execution]
@execution_id;
要从dtexec获得相同的行为,您可以指定参数
DTExec
/ISSERVER "\SSISDB\folderB\Integration Services Project17\Package.dtsx"
/SERVER "." /Envreference 2
/Par "$Project::ProjectParameter(Int32)";1 /Par "Parameter(Int32)";21
/Par "CM.sqlcldb2.SSIS_repro.InitialCatalog";ssisdb
/Par "$ServerOption::SYNCHRONIZED(Boolean)";True