当指向远程SSIS程序包时,是否有办法使dtexec工具在程序包完成运行之前不退出?

我的程序包成功运行,但是dtexec报告的运行时间比SQL Server的“所有执行”报告中报告的实际持续时间短得多。
它显示消息:

To view the details for the execution, right-click on the Integration Services Catalog, and open the [All Executions] report


我的目标是在命令行上启动dtexec,然后运行取决于程序包完成情况的其他代码。理想情况下,我希望dtexec在程序包完成运行之前不退出。

这可能吗?

最佳答案

您正在寻找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

08-04 12:47