На шаге задания выполните пакет из каталога служб SSIS с помощью T-SQL и добавьте условие, чтобы проверить, активен ли уже пакет. В приведенном ниже примере catalog.executions
DMV запрашивается для пакета с заданным именем со статусом 2, который представляет текущий запущенный пакет. Если этот пакет уже найден активным, то ничего не делается, в противном случае он выполняется из хранимой процедуры catalog.start_execution
.
IF NOT EXISTS(SELECT EXECUTION_ID FROM SSISDB.CATALOG.EXECUTIONS WHERE PACKAGE_NAME = 'YourPackage.dtsx'
AND PROJECT_NAME = 'ProjectOfPackage' AND FOLDER_NAME = 'Folder Containing Package' AND [STATUS] = 2)
BEGIN
DECLARE @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'YourPackage.dtsx', @execution_id=@execution_id OUTPUT,
@folder_name=N'Folder Containing Package', @project_name=N'ProjectOfPackage'
DECLARE @var0 smallint = 2
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50,
@parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0
EXEC [SSISDB].[catalog].[start_execution] @execution_id
END