2013-07-18 5 views
4

Есть ли способ заставить инструмент dtexec не выходить, пока пакет не завершит работу, если указана на удаленный пакет SSIS?Выполнить удаленный пакет ssis с помощью dtexec

Мой пакет работает успешно, но dtexec сообщает о гораздо более коротком времени выполнения, чем фактическая продолжительность, о которой сообщается в отчете «All Executions» на SQL Server. Он печатает сообщение:

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

Моя цель состоит в том, чтобы начать DTExec в командной строке, а затем запустить другой код, который зависит от завершения пакета. В идеале я бы хотел, чтобы dtexec не выходил, пока пакет не завершил работу.

Возможно ли это?

ответ

4

Вы ищете SYNCHRONIZED параметра

Чтобы сделать мою ссылку ответить только в ссылке и только код ответа, вот код Фила за это жгутов TSQL

DECLARE @execution_id BIGINT = 0; 

-- Create a package execution 
EXEC [SSISDB].[catalog].[create_execution] 
     @package_name=N'Package.dtsx', 
     @[email protected]_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 
+0

Это сделало трюк. Благодаря! – TGH

Смежные вопросы