如何使用跟踪标记 1204

-- =====================================================
-- 如何使用跟踪标记 1204
--
-- 邹建 2005.08(引用请保留此信息)
-- =====================================================

-- =====================================================
/*-- 说明

    跟踪标记 1204 用于返回参与死锁的锁的类型以及当前受影响的命令。死锁信息将自动发送到错误日志。
    开启跟踪标记使用 DBCC TRACEON ,第3个参数指定为-1,表示不单单针对当前connection,而是针对所有包括未来建立的connection
    关闭跟踪标记使用 DBCC TRACEOFF
       
    下面是在查询分析器中使用跟踪标记 1204 的演示, 死锁的信息被记录在 SQL Server 日志中,可以通过下面的方法查看:
    企业管理器 -- 展开实例 -- 管理 -- SQL Server 日志
    由于在企业管理器中查看时, 部分日志信息会被截断, 所以所以建议使用记事本一类的文本查看工具直接查看 \MSSQL\LOG 目录下的 ERRORLOG 文件

    有关死锁信息的详细说明参考联机帮助(联机丛书--菜单中的GO--URL--输入下面的地址:
    mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\trblsql.chm::/tr_servdatabse_5xrn.htm
--*/
-- =====================================================

-- 测试环境
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

-- 产生死锁 (打一个新连接, 复制此段代码并且执行)
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:05:00'
    UPDATE tb 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)

 

时间: 2024-11-08 17:30:43

如何使用跟踪标记 1204的相关文章

跟踪标记全攻略

攻略 跟踪标记 一 概述跟踪标记用于临时设置服务器的特定特征或关闭特定行为 二 分类 1. BOL记载的跟踪标记        描述 260    打印有关扩展存储过程动态链接库 (DLL) 的版本信息.       有关 __GetXpVersion() 的更多信息,请参见创建扩展存储过程. 1204   返回参与死锁的锁的类型以及当前受影响的命令.        补充 此参数将把死锁产生的相关信息(锁类型,SQL查询等)写入Error Log   2528   通过 DBCC CHECKDB

如何控制SQLServer中的跟踪标记_MsSql

跟踪标记是什么? 对于DBA来说,掌握Trace Flag是一个成为SQL Server高手的必要条件之一,在大多数情况下,Trace Flag只是一个剑走偏锋的奇招,不必要,但在很多情况下,会使用这些标记可以让你更好的控制SQL Server的行为. 下面是官方对于Trace Flag的标记: 跟踪标记是一个标记,用于启用或禁用SQL Server的某些行为. 由上面的定义不难看出,Trace Flag是一种用来控制SQL Server的行为的方式.很多DBA对Trace Flag都存在一些误

如何控制SQLServer中的跟踪标记

跟踪标记是什么? 对于DBA来说,掌握Trace Flag是一个成为SQL Server高手的必要条件之一,在大多数情况下,Trace Flag只是一个剑走偏锋的奇招,不必要,但在很多情况下,会使用这些标记可以让你更好的控制SQL Server的行为. 下面是官方对于Trace Flag的标记: 跟踪标记是一个标记,用于启用或禁用SQL Server的某些行为. 由上面的定义不难看出,Trace Flag是一种用来控制SQL Server的行为的方式.很多DBA对Trace Flag都存在一些误

竞价推广URL跟踪标记技巧有哪些

这里来浅谈竞价URL的跟踪标记,自从公司出了新考核制度.不能找出是那个竞价关键词带来的电话不算.你说这不是坑爹吗,http://www.aliyun.com/zixun/aggregation/8683.html">网络电话不算,网络直上也不算,就连知道是竞价来的,没有关键词也不算(可以通过着陆页大致知道是那个计划, 但是具体到关键词就很难找到了.) 那么我是不是可以通过加访问url的标记是实现呢.   于是开始了加标记的工作.   由于我对excel的使用不是很熟悉,开始的时候,加的标记

使用跟踪标记查看过滤统计信息是否被使用

原文:使用跟踪标记查看过滤统计信息是否被使用     在某些情况下,表中数据较多,且分布不均匀的时候,执行计划的估计行数往往会有很大偏差,因此SQL Server 2008引入了过滤统计信息,意味着只对表中的特定数据计算统计信息.那么在调优查询的过程中如何知道语句是否使用了过滤统计信息呢?SQL Server提供了一个隐藏的跟踪标记来支持这一过程.下面Demo可以展示如何使用该跟踪标记.       我们首先对AdventureWorks的SalesOrderDetail做一个简单的查询,代码如

解决带有utm等跟踪标记的重复页面

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 无论是ppc投放账户的URL设置,还是seo的页面跟踪, 都免不了对页面加入各种标记(跟踪代码),常用的标记方法是在URL后通过 ? 或 # 附带设置好的标记内容,以便于在流量统计分析工具中进行数据分析. 除了手动添加标记外,google的网址构建器是个不错的工具 https://support.google.com/analytics/an

启动SQLServer的死锁检查

server|sqlserver 对于数据库死锁,通常可以通过TRACE FLAG 1204.1205.1206,检查ERRORLOG里面的输出,和分析SQLTRACE的执行上下文判断死锁问题的来由.TRACEON函数的第三个参数设置为-1,表示不单单针对当前connection,而是针对所有包括未来建立的connection.这样,才够完全,否则只是监视当前已经建立的数据库连接了.   执行下面的话可以把死锁记录到Errorlog中: dbcc traceon (1204, 3605, -1)

[SQL]启动SQLServer的死锁检查

server|sqlserver 启动SQLServer的死锁检查Report Date:   2003/12/11 Prepared by:     郑昀 Article last modified on 2004-2-16 The information in this article applies to: ü        Microsoft SQL Server 2000,7.0陈述:对于数据库死锁,通常可以通过TRACE FLAG 1204.1205.1206,检查ERRORLOG里

SQL Server死锁的分析

server SQL Server数据库发生死锁时不会像ORACLE那样自动生成一个跟踪文件.有时可以在[管理]->[当前活动] 里看到阻塞信息(有时SQL Server企业管理器会因为锁太多而没有响应). 设定跟踪1204: USE MASTERDBCC TRACEON (1204,-1) 显示当前启用的所有跟踪标记的状态: DBCC TRACESTATUS(-1) 取消跟踪1204: DBCC TRACEOFF (1204,-1) 在设定跟踪1204后,会在数据库的日志文件里显示SQL Se