#sql #sql-server #ssis #sql-server-2017
#sql #sql-сервер #Служба службы безопасности #sql-server-2017
Вопрос:
Выполняется ли «Выполнение задания агента SQL Server» в службах SSIS синхронно или асинхронно в службах SSIS?
(a) Синхронно: означает, что задание запускается и ожидает завершения, затем переходит к следующему шагу,
(b) Асинхронный: или он просто запускает его и сразу переходит к следующему шагу?
Ответ №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
и указал ее на сервер и задание. Я запустил его, и пакет успешно завершен менее чем за две секунды.