【发布时间】:2017-05-03 05:52:01
【问题描述】:
我试图通过说来了解执行作业之间的区别
EXEC spMyProc1 与 EXEC msdb.dbo.sp_start_job N'Job - SpMyProc1'
一切都通过 SQl Server Job Agent 运行。
这是一个例子:
我有一份工作,步骤如下:
第 1 步:在命令框中有 EXEC dbo.spJob1 -- 只是运行一个 SP
第二步:同类型命令EXEC dbo.spJob2 -- spJob2依赖Job1完成
第 3 步:具有以下内容:
EXEC msdb.dbo.sp_start_job N'Job3'
EXEC msdb.dbo.sp_start_job N'Job4'
Job3 内部是 EXEC spJob3
Job4 里面是 EXEC spJob4
第 4 步 - 再次拥有 EXEC dbo.spJob5
我想确保每项工作在下一个工作开始之前完成。
我的理解是,由于第 1 步正在执行一个实际的 SP,因此“成功”意味着该 SP 已成功完成。因此,Step1 中的 SP 完成后,Step 2 才会开始。
另一方面,当第 3 步开始时,这一步的“成功”意味着只是开始其他工作。它不会等待这些作业中的 SP 完成。 Job3 和 Job4 启动后,Job Agent 将进入第 4 步。
这是正确的吗?
其次,在第 3 步中,它会等待 Job3 完成,还是只是启动 Job Job3 并继续启动 spJob4 而不等待内部代码完成?
我正在使用 SQL Sever 2005
感谢您的帮助。
【问题讨论】:
标签: sql sql-server sql-server-2008 stored-procedures jobs