当指向远程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