天天看点

如何使用跟踪标记 1204

如何使用跟踪标记 1204

-- =====================================================

-- 如何使用跟踪标记 1204

-- 

-- 邹建 2005.08(引用请保留此信息)

-- =====================================================

-- =====================================================

-- =====================================================

-- 测试环境

USE tempdb

GO

CREATE TABLE ta(id int)

INSERT ta SELECT 1

CREATE TABLE tb(id int)

INSERT tb SELECT 1

GO

-- 开启死锁记录

DBCC TRACEON(1204,3605,-1)

GO

-- 产生死锁 (查询窗口A)

SET LOCK_TIMEOUT -1

SET TRANSACTION ISOLATION LEVEL

    REPEATABLE READ

BEGIN TRAN

    SELECT * FROM ta WHERE id=1

    WAITFOR DELAY '00:05:00'

    UPDATE tb SET id=2 WHERE id=1

COMMIT TRAN

GO

-- 产生死锁 (查询窗口B)

SET LOCK_TIMEOUT -1

SET DEADLOCK_PRIORITY LOW

SET TRANSACTION ISOLATION LEVEL

    REPEATABLE READ

BEGIN TRAN

    SELECT * FROM tb WHERE id=1

    UPDATE ta SET id=2 WHERE id=1

COMMIT TRAN

GO

-- 关闭死锁记录

DBCC TRACEOFF(1204,3605)

GO

-- 清除测试

DROP TABLE ta,tb

GO

-- 1204 产生的日志记录信息

2005-08-25 08:16:21.85 spid4     Node:1

2005-08-25 08:16:21.85 spid4     RID: 2:1:28:0                  CleanCnt:2 Mode: U Flags: 0x2

2005-08-25 08:16:21.85 spid4      Grant List 0::

2005-08-25 08:16:21.85 spid4        Owner:0x1998aec0 Mode: S        Flg:0x0 Ref:1 Life:02000000 SPID:52 ECID:0

2005-08-25 08:16:21.85 spid4        SPID: 52 ECID: 0 Statement Type: UPDATE Line #: 1

2005-08-25 08:16:21.85 spid4        Input Buf: Language Event: SET LOCK_TIMEOUT -1

SET TRANSACTION ISOLATION LEVEL

    REPEATABLE READ

BEGIN TRAN

    SELECT * FROM tb WHERE id=1

    WAITFOR DELAY '00:01:00'

    UPDATE ta SET id=2 WHERE id=1

COMMIT TRAN

2005-08-25 08:16:21.85 spid4      Requested By: 

2005-08-25 08:16:21.85 spid4        ResType:LockOwner Stype:'OR' Mode: X SPID:51 ECID:0 Ec:(0x19B5B558) Value:0x1997b2c0 Cost:(1/0)

2005-08-25 08:16:21.85 spid4     Node:2

2005-08-25 08:16:21.85 spid4     RID: 2:1:15:0                  CleanCnt:2 Mode: U Flags: 0x2

2005-08-25 08:16:21.85 spid4      Grant List 0::

2005-08-25 08:16:21.85 spid4        Owner:0x1997b3e0 Mode: S        Flg:0x0 Ref:1 Life:02000000 SPID:51 ECID:0

2005-08-25 08:16:21.85 spid4        SPID: 51 ECID: 0 Statement Type: UPDATE Line #: 1

2005-08-25 08:16:21.85 spid4        Input Buf: Language Event: 

SET LOCK_TIMEOUT -1

SET DEADLOCK_PRIORITY LOW

SET TRANSACTION ISOLATION LEVEL

    REPEATABLE READ

BEGIN TRAN

    SELECT * FROM ta WHERE id=1

    WAITFOR DELAY '00:01:00'

    UPDATE tb SET id=2 WHERE id=1

COMMIT TRAN

2005-08-25 08:16:21.85 spid4      Requested By: 

2005-08-25 08:16:21.85 spid4        ResType:LockOwner Stype:'OR' Mode: X SPID:52 ECID:0 Ec:(0x1A24D558) Value:0x1998cfa0 Cost:(0/0)

2005-08-25 08:16:21.85 spid4     Victim Resource Owner:

2005-08-25 08:16:21.85 spid4      ResType:LockOwner Stype:'OR' Mode: X SPID:51 ECID:0 Ec:(0x19B5B558) Value:0x1997b2c0 Cost:(1/0)

-- 分析日志记录信息, 以分析 Node:1 为例, --** 标注的是说明

--** Node:x 在死锁的链中表示项目号 (x)。 

2005-08-25 08:16:21.85 spid4     Node:1

2005-08-25 08:16:21.85 spid4     RID: 2:1:28:0                  CleanCnt:2 Mode: U Flags: 0x2

--** Lists, 可以是授权(Grant)、转换(Convert)和等待(Wait),Grant List列举当前授权的所有者.

2005-08-25 08:16:21.85 spid4      Grant List 0::

2005-08-25 08:16:21.85 spid4        Owner:0x1998aec0 Mode: S        Flg:0x0 Ref:1 Life:02000000 SPID:52 ECID:0

--** 在并行进程情况下,标识系统进程 ID 线程。条目 SPID x ECID 0 表示主线程,而 SPID x ECID > 0 表示同一 SPID 的子线程。 

--** Statement Type: 语句类型

--** Line #:死锁发生时,正在执行的语句的行号

2005-08-25 08:16:21.85 spid4        SPID: 52 ECID: 0 Statement Type: UPDATE Line #: 1

--** input Buf 列出当前批处理中所有的语句。

2005-08-25 08:16:21.85 spid4        Input Buf: Language Event: 

SET LOCK_TIMEOUT -1

SET TRANSACTION ISOLATION LEVEL

    REPEATABLE READ

BEGIN TRAN

    SELECT * FROM tb WHERE id=1

    WAITFOR DELAY '00:01:00'

    UPDATE ta SET id=2 WHERE id=1

COMMIT TRAN

2005-08-25 08:16:21.85 spid4      Requested By: 

--** Mode 为线程请求、授权或等待的特定资源,指定锁的类型。模式可以是 IS(意向共享)、S(共享)、U(更新)、IX(意向独占)、SIX(与意向独占共享)和 X(独占)

2005-08-25 08:16:21.85 spid4        ResType:LockOwner Stype:'OR' Mode: X SPID:51 ECID:0 Ec:(0x19B5B558) Value:0x1997b2c0 Cost:(1/0)