【问题标题】:In SQL Server Jobs Two stored procedures Execute one by one or simultaneously?SQL Server Jobs 中两个存储过程是一个一个执行还是同时执行?
【发布时间】:2017-02-01 11:38:06
【问题描述】:

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

Exec my_First_Procedure
Exec my_Second_Procedure

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

帮我找到它。感谢您的建议。

【问题讨论】:

  • 它们是按顺序执行的。如果第一个失败,第二个不会运行。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,如果第一个语句耗时较长,则第二个启动执行或等待第一个语句执行。
【解决方案2】:

您为调用两个过程和从作业调用创建一个存储过程。两个 SP 都在新作业中执行 1 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

【讨论】:

    猜你喜欢
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多