在SQL Server作业中两个存储过程逐个执行还是同时执行?

时间:2017-02-01 11:38:06

标签: sql sql-server job-scheduling sql-agent-job sql-job

我想在SQL Server 2012中创建一个JOB,以执行两个相关的存储过程。

Exec my_First_Procedure
Exec my_Second_Procedure

如果我像上面那样创建JOB,第二个在第一个完成后开始执行,或者两个查询同时执行?

帮我找到它。谢谢你的建议。

2 个答案:

答案 0 :(得分:6)

T-SQL是一种脚本语言。语句按顺序执行。事实上,几乎所有计算机语言都是如此。通常,您必须经过一些努力才能并行执行。

如果第一个语句失败,则不执行第二个语句。

SQL Server确实具有并行运行的机制。使用消息队列功能,一种方法相当复杂。您可以阅读有关消息队列here的信息。或者有关于异步执行主题的各种博客,例如one

另一种选择是使用工作。只需安排两个作业同时运行。

答案 1 :(得分:2)

您为调用两个过程创建一个Store过程并从作业调用。两个SP都在新job1 SP中执行,即使失败也是成功。

create procedure job1
as 
begin try
    begin try
        exec my_First_Procedure;
    end try 
    begin catch 
        select ERROR_MESSAGE() as messages;
    end catch

    begin try
        exec my_Second_Procedure;
    end try 
    begin catch 
        select ERROR_MESSAGE() as messages;
    end catch

    select 'Success' as messages;
end try
begin catch 
    select ERROR_MESSAGE() as messages;
end catch