2013-07-18 5 views
4

Existe-t-il un moyen d'empêcher l'exécution de l'outil dtexec tant que le package n'est pas en cours d'exécution, lorsqu'il est pointé vers un package SSIS distant?Exécution du package ssis distant à l'aide de dtexec

Mon package s'exécute correctement, mais dtexec signale un temps d'exécution beaucoup plus court que la durée réelle indiquée dans le rapport "Toutes les exécutions" sur SQL Server. Il imprime le message:

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

Mon but est de coup d'envoi dtexec sur la ligne de commande, puis exécutez autre code qui dépend de l'achèvement du paquet. Idéalement, je voudrais que dtexec ne sorte pas tant que le paquet n'a pas été exécuté.

Est-ce possible?

Répondre

4

Vous recherchez le paramètre SYNCHRONIZED

Pour mon lien ne répondre en lien et le code ne répond, voici le code de Phil pour le faire sont acceptés dans les 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; 

Pour obtenir le même comportement de dtexec, vous devez spécifier le paramètre comme

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

Cela a fait l'affaire. Merci! – TGH

Questions connexes