使用dtexec执行远程ssis包

时间:2013-07-18 21:59:42

标签: sql-server ssis

当指向远程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在程序包完成运行之前不要退出。

这可能吗?

1 个答案:

答案 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