锋利的SQL2014:处理死锁(二)

2015-11-21 01:33:46 · 作者: · 浏览: 7
;

ELSE

SET @retry = -1;

-- 输出错误消息

EXECUTE usp_MyErrorLog;

-- 会话中包含无法提交的事务

-- XACT_STATE将返回 -1

IF XACT_STATE() <> 0

ROLLBACK TRANSACTION;

END CATCH;

END; -- 结束WHILE循环

下面是会话1中返回的消息,表示两行都已经被更新。

(1 行受影响)

(1 行受影响)

下面是会话2中返回的消息,会话2被作为了死锁牺牲品。

(1 行受影响) -- 由于死锁,会话2事务中只成功更新1行,这时会发生回滚操作

错误 1205, 严重级别 13, 状态 51, 行18 -- 由存储过程usp_MyErrorLog输出的错误消息

事务(进程 ID52)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。请重新运行该事务。 -- SQL Server的提示

(1 行受影响) -- 本行和下行消息是重新尝试更新后得到的提示消息

(1 行受影响)