SSIS:异步或同步执行 SQL 服务器代理作业任务 运行

SSIS : Execute SQL Server Agent Job Task run Asychronously or Synchronously

在 SSIS 中 "Execute SQL Server Agent Job Task",在 SSIS 中 运行 是同步还是异步?

(a) 同步:意思是作业触发并等待完成,然后进入下一步,

(b) 异步: 还是直接触发,马上进入下一步?

它异步运行 - 触发后忘记

以下是您可以轻松验证此行为的方法。

SQL 代理工作

此作业执行名为 WAITFOR 的 TSQL 命令。我指定等待 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 类型的任务并将其指向服务器和作业。我 运行 它 呼呼 包在不到两秒的时间内成功完成。