繁体   English   中英

SSIS:执行 SQL Server 代理作业任务以异步或同步方式运行

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

在 SSIS 中执行“执行 SQL Server 代理作业任务”,在 SSIS 中同步还是异步运行?

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

(b) 异步:还是只是触发它,然后立即进行下一步?

7

它是异步运行的——即发即忘

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

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 结果选项卡指示 2 秒执行持续时间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM