SSIS: выполнение задания агента SQL Server выполняется асинхронно или синхронно

#sql #sql-server #ssis #sql-server-2017

#sql #sql-сервер #Служба службы безопасности #sql-server-2017

Вопрос:

Выполняется ли «Выполнение задания агента SQL Server» в службах SSIS синхронно или асинхронно в службах SSIS?

(a) Синхронно: означает, что задание запускается и ожидает завершения, затем переходит к следующему шагу,

(b) Асинхронный: или он просто запускает его и сразу переходит к следующему шагу?

7

Ответ №1:

Он выполняется асинхронно — запустите и забудьте

Вот как вы можете легко проверить это поведение.

Задание агента SQL

Это задание выполняет вызываемую команду TSQL WAITFOR . Я указываю ожидание в течение 15 секунд. Запустите задание само по себе, и через 16 секунд или меньше в отчете журнала заданий появится запись, показывающая, что задание выполнено успешно.

 USE msdb;
GO

DECLARE @jobId binary(16);

EXEC msdb.dbo.sp_add_job
    @job_name = N'Run for 15 seconds'
,   @enabled = 1
,   @notify_level_eventlog = 0
,   @notify_level_email = 2
,   @notify_level_page = 2
,   @delete_level = 0
,   @category_name = N'[Uncategorized (Local)]'
,   @owner_login_name = N'sa'
,   @job_id = @jobId OUTPUT;

SELECT
    @jobId;
GO

EXEC msdb.dbo.sp_add_jobserver
    @job_name = N'Run for 15 seconds'
,   @server_name = N'BUCKLANDDEV2017';
GO

USE msdb;
GO

EXEC msdb.dbo.sp_add_jobstep
    @job_name = N'Run for 15 seconds'
,   @step_name = N'Wait for it'
,   @step_id = 1
,   @cmdexec_success_code = 0
,   @on_success_action = 1
,   @on_fail_action = 2
,   @retry_attempts = 0
,   @retry_interval = 0
,   @os_run_priority = 0
,   @subsystem = N'TSQL'
,   @command = N'WAITFOR DELAY ''00:00:15'';'
,   @database_name = N'master'
,   @flags = 0;
GO

USE msdb;
GO

EXEC msdb.dbo.sp_update_job
    @job_name = N'Run for 15 seconds'
,   @enabled = 1
,   @start_step_id = 1
,   @notify_level_eventlog = 0
,   @notify_level_email = 2
,   @notify_level_page = 2
,   @delete_level = 0
,   @description = N''
,   @category_name = N'[Uncategorized (Local)]'
,   @owner_login_name = N'sa'
,   @notify_email_operator_name = N''
,   @notify_page_operator_name = N'';
GO
  

Пакет службы службы безопасности

Я создал пакет службы SSIS, добавил задачу типа Execute SQL Server Agent Job Task и указал ее на сервер и задание. Я запустил его, и пакет успешно завершен менее чем за две секунды.

Вкладка результатов службы SSIS с указанием 2-секундной продолжительности выполнения