Службы SSIS: выполнение задачи задания агента SQL Server выполняется асинхронно или синхронно - PullRequest
2 голосов
/ 20 апреля 2019

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

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

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

7

1 Ответ

2 голосов
/ 21 апреля 2019

Работает асинхронно - запускайте и забывайте

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

Задание агента 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'BUCKLAND\DEV2017';
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

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

SSIS Results Tab indicating 2 second execution duration

...