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
类型的任务并将其指向服务器和作业。我 运行 它 呼呼 包在不到两秒的时间内成功完成。
在 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
类型的任务并将其指向服务器和作业。我 运行 它 呼呼 包在不到两秒的时间内成功完成。