【发布时间】:2015-03-05 15:17:37
【问题描述】:
假设我们有这个程序:
create procedure procDoSomeJob
as
begin
print 'Step 1';
exec procStep1;
print 'Step 2';
exec procStep2; -- This step raises a primary key violation
print 'Step 3';
exec procStep3;
end;
所以这个过程调用了其他过程,这些过程执行一些 SQL 语句(INSERT、UPDATE)。
假设 proc_Step2 引发错误(例如主键违规)。
现在,我创建了一个作业,并在那里调用了这个过程:
exec dbo.procDoSomeJob;
现在有趣的部分:
作业运行后,在 SQL Mgmt Studio 中,我在“作业历史记录”中看到出现错误并且作业“失败”。
另外,在描述中,我看到了输出
第 1 步第 2 步 (--> 没有“第 3 步”)
但是当查看数据时,实际上,过程procStep3已经执行了!
那为什么我看不到
的输出PRINT 'Step 3';
但是
EXEC procStep3;
真的被执行了吗?
【问题讨论】:
-
在procStep2里面存在proc procStep3 :)
标签: sql-server stored-procedures sql-server-2008-r2