我想在SQL Server 2012中创建一个JOB,以执行两个相关的存储过程。
Exec my_First_Procedure
Exec my_Second_Procedure
如果我像上面那样创建JOB,第二个在第一个完成后开始执行,或者两个查询同时执行?
帮我找到它。谢谢你的建议。
答案 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