在 SQL Server 2008 R2 中,我有一个存储过程 X,它执行 2 个其他存储过程:
create procedure X
begin
exec A
exec B
end
存储过程 A 中有一个事务
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
begin transaction
insert into .....
set @ReadingID = (select SCOPE_IDENTITY())
commit transaction
如果存储过程 A 因死锁而失败,是在用户确认死锁消息后执行存储过程 B,还是中止存储过程 X?
我曾预计 X 会中止,但我的实时数据表明 B 可能在 A 失败后运行 - 或者至少这是对数据的一种解释 - 或者至少是用户对似乎发生的事情的描述。