3. 跟蹤標記 (Trace Flag) 1204, 1222 抓取死鎖信息

跟蹤標記:1204/1222

功能及用途:

捕獲SQL Server死鎖信息,并自動存放到錯誤日志(ERRORLOG)中。

?

舉例:

USE tempdb
GO CREATE TABLE t1(id int)
INSERT t1 SELECT 1CREATE TABLE t2(id int)
INSERT t2 SELECT 1
GO --開啟1204/1222跟蹤標記(任何查詢窗口)
DBCC TRACEON(1204,-1)
--DBCC TRACEON(1205,3605,-1)
--DBCC TRACEON(1206,3605,-1)--DBCC TRACEON(1222,-1)
GO --查詢窗口1
SET LOCK_TIMEOUT -1
SET TRANSACTION ISOLATION LEVEL READ COMMITTEDBEGIN TRANUPDATE t1 SET id = 0 WHERE id=1WAITFOR DELAY '00:00:05'UPDATE t2 SET id = 0 WHERE id=1
--COMMIT TRAN
GO --查詢窗口2
SET LOCK_TIMEOUT -1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED--死鎖優先級為low,將被選擇作為犧牲品
SET DEADLOCK_PRIORITY LOW BEGIN TRANUPDATE t2 SET id = 0 WHERE id=1UPDATE t1 SET id = 0 WHERE id=1
--COMMIT TRAN
GO --關閉1204/1222跟蹤標記(任何查詢窗口)
DBCC TRACEOFF(1204,-1)
--DBCC TRACEOFF(1205,3605,-1)
--DBCC TRACEOFF(1206,3605,-1)--DBCC TRACEOFF(1222,-1)
GO --查看錯誤日志里的死鎖信息
exec xp_readerrorlog 0,1DROP TABLE t1,t2

?

跟蹤標記1204 在錯誤日志中記錄的死鎖信息

DBCC TRACEON 1204, server process ID (SPID) 56. This is an informational message only; no user action is required.
Deadlock encountered .... Printing deadlock information
Wait-for graph
NULL
Node:1RID: 2:1:624:0                 CleanCnt:2 Mode:X Flags: 0x3Grant List 1:Owner:0x00000034DF20D840 Mode: X        Flg:0x40 Ref:0 Life:02000000 SPID:56 ECID:0 XactLockInfo: 0x00000034DDE34440SPID: 56 ECID: 0 Statement Type: UPDATE Line #: 9Input Buf: Language Event: 
--查詢窗口1
SET LOCK_TIMEOUT -1
SET TRANSACTION ISOLATION LEVEL READ COMMITTEDBEGIN TRANUPDATE t1 SET id = 0 WHERE id=1WAITFOR DELAY '00:00:05'UPDATE t2 SET id = 0 WHERE id=1
--COMMIT TRANRequested by: ResType:LockOwner Stype:'OR'Xdes:0x00000034E122B2B8 Mode: U SPID:58 BatchID:0 ECID:0 TaskProxy:(0x00000034BB418870) Value:0xdf20d040 Cost:(5/224)
NULL
Node:2RID: 2:3:944:0                 CleanCnt:2 Mode:X Flags: 0x3Grant List 1:Owner:0x00000034DF20D980 Mode: X        Flg:0x40 Ref:0 Life:02000000 SPID:58 ECID:0 XactLockInfo: 0x00000034E122B2F0SPID: 58 ECID: 0 Statement Type: UPDATE Line #: 8Input Buf: Language Event: 
--查詢窗口2
SET LOCK_TIMEOUT -1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET DEADLOCK_PRIORITY LOWBEGIN TRANUPDATE t2 SET id = 0 WHERE id=1UPDATE t1 SET id = 0 WHERE id=1
--COMMIT TRAN
Requested by: ResType:LockOwner Stype:'OR'Xdes:0x00000034DDE34408 Mode: U SPID:56 BatchID:0 ECID:0 TaskProxy:(0x00000034BB1DC870) Value:0xdf20ec00 Cost:(0/224)
NULL
Victim Resource Owner:ResType:LockOwner Stype:'OR'Xdes:0x00000034E122B2B8 Mode: U SPID:58 BatchID:0 ECID:0 TaskProxy:(0x00000034BB418870) Value:0xdf20d040 Cost:(5/224)
DBCC TRACEOFF 1204, server process ID (SPID) 56. This is an informational message only; no user action is required.

?

跟蹤標記1222 在錯誤日志中記錄的死鎖信息

DBCC TRACEON 1222, server process ID (SPID) 56. This is an informational message only; no user action is required.
deadlock-listdeadlock victim=process34d71fc4e8process-listprocess id=process34d71fc4e8 taskpriority=5 logused=224 waitresource=RID: 2:1:624:0 waittime=3012 ownerId=1281992 transactionname=user_transaction lasttranstarted=2016-10-12T10:11:24.513 XDES=0x34dde34408 lockMode=U schedulerid=2 kpid=5736 status=suspended spid=58 sbid=0 ecid=0 priority=-5 trancount=2 lastbatchstarted=2016-10-12T10:11:24.513 lastbatchcompleted=2016-10-12T10:11:12.760 lastattention=2016-10-12T10:10:46.323 clientapp=Microsoft SQL Server Management Studio - Query hostname=CHRZHANG hostpid=6924 loginname=PCLC0\chrzhang isolationlevel=read committed (2) xactid=1281992 currentdb=2 lockTimeout=4294967295 clientoption1=671090784 clientoption2=390200executionStackframe procname=adhoc line=9 stmtstart=38 stmtend=116 sqlhandle=0x020000006f1dc606af4ee82be297cae142d4eca1b1b26d840000000000000000000000000000000000000000
unknown     frame procname=adhoc line=9 stmtstart=324 stmtend=384 sqlhandle=0x02000000c9c0f33adb0fe790eb6b0e4c7175f9f4b5931a970000000000000000000000000000000000000000
unknown     inputbuf
--查詢窗口2
SET LOCK_TIMEOUT -1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET DEADLOCK_PRIORITY LOW
BEGIN TRANUPDATE t2 SET id = 0 WHERE id=1UPDATE t1 SET id = 0 WHERE id=1
--COMMIT TRANprocess id=process34ddc6a4e8 taskpriority=0 logused=224 waitresource=RID: 2:3:944:0 waittime=1071 ownerId=1281979 transactionname=user_transaction lasttranstarted=2016-10-12T10:11:21.440 XDES=0x34e122b2b8 lockMode=U schedulerid=2 kpid=968 status=suspended spid=56 sbid=0 ecid=0 priority=0 trancount=2 lastbatchstarted=2016-10-12T10:11:21.440 lastbatchcompleted=2016-10-12T10:11:04.287 lastattention=1900-01-01T00:00:00.287 clientapp=Microsoft SQL Server Management Studio - Query hostname=CHRZHANG hostpid=6924 loginname=PCLC0\chrzhang isolationlevel=read committed (2) xactid=1281979 currentdb=2 lockTimeout=4294967295 clientoption1=671090784 clientoption2=390200executionStackframe procname=adhoc line=8 stmtstart=38 stmtend=116 sqlhandle=0x0200000083cd4832d993ca3b2dcaae9f9cc70a25e718dbe90000000000000000000000000000000000000000
unknown     frame procname=adhoc line=8 stmtstart=326 stmtend=386 sqlhandle=0x02000000ff6a84274c6888c86c481ae84300231e8f5fb8000000000000000000000000000000000000000000
unknown     inputbuf
--查詢窗口1
SET LOCK_TIMEOUT -1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
BEGIN TRANUPDATE t1 SET id = 0 WHERE id=1WAITFOR DELAY '00:00:05'UPDATE t2 SET id = 0 WHERE id=1
--COMMIT TRANresource-listridlock fileid=1 pageid=624 dbid=2 objectname=tempdb.dbo.t1 id=lock34d8ea3200 mode=X associatedObjectId=2017612634171244544owner-listowner id=process34ddc6a4e8 mode=Xwaiter-listwaiter id=process34d71fc4e8 mode=U requestType=waitridlock fileid=3 pageid=944 dbid=2 objectname=tempdb.dbo.t2 id=lock34d8ea3780 mode=X associatedObjectId=2089670228250132480owner-listowner id=process34d71fc4e8 mode=Xwaiter-listwaiter id=process34ddc6a4e8 mode=U requestType=wait
DBCC TRACEOFF 1222, server process ID (SPID) 56. This is an informational message only; no user action is required.

?

小結:

(1) 不需要加跟蹤標記3605,跟蹤標記1204,1222捕獲的死鎖信息便會被寫到錯誤日志;

(2) 跟蹤標記 1222以XML樣式返回死鎖信息,相比跟蹤標記1204,返回的信息也更為豐富;

(3) 無文檔記載的跟蹤標記1205,1206,據說可以用來豐富1204捕獲死鎖的信息,在SQL Server 2016下簡單測試同時開啟1204,1205,1206,和單獨開啟1204并沒發現有什么不同,個人猜測是隨著版本更替,跟蹤標記捕獲的死鎖信息已經被整合,直接用1204或1222即可;

(4) 從SQL Server 2008開始,引進了擴展事件(Extended Events),也可以用來捕獲死鎖信息。

?

參考:

Tracing a SQL Server Deadlock

https://www.mssqltips.com/sqlservertutorial/252/tracing-a-sql-server-deadlock/

?

Trace Flags - SQL Server Wiki - SQL Server - Toad World

https://www.toadworld.com/platforms/sql-server/w/wiki/9790.trace-flags

?

Using SQL Server 2008 Extended Events

https://technet.microsoft.com/en-us/library/dd822788%28v=sql.100%29.aspx?f=255&MSPPError=-2147217396

?

轉載于:https://www.cnblogs.com/seusoftware/p/5952774.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373712.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373712.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

postgresql建表帶注釋_postgresql建表帶自增id和注釋語句

work是表名,nextval(work_myid_seq::regclass)這個是自增id的設置CREATE TABLE "public"."work" ("id" int8 NOT NULL DEFAULT nextval(work_myid_seq::regclass),"wid" int8,"address" varchar(100) COLLATE &q…

js中window.onload 與 jquery中$(document.ready()) 測試

js中window.onload 與 jquery中$(document.ready())區別&#xff0c;驗證代碼如下(調換js代碼和Jquer代碼書寫順序測試&#xff0c;運行結果一樣&#xff0c;因此與代碼書寫位置沒關系)&#xff1a;<html> <head> <script typetext/javascript srcjquery-1.11.1…

5. Longest Palindromic Substring

更新&#xff1a; 之前那種dp太笨重了有個非常的輕巧的做法&#xff0c;原理都是一樣的。 轉移方程不變&#xff0c;但是不需要特別的初始化 判斷某個格子是不是true&#xff0c;是 1.要么長度小于3&#xff0c;要么dp[start1][end-1]true 2.并且s.charAt(start) s.charAt(end…

Java中的定制國際化(i18n)

國際化&#xff08;i18n&#xff09;在我們的軟件項目中非常重要。 它主要帶來以下好處&#xff1a; 將UI字符串外部化為除代碼文件之外的外部文件&#xff0c;以及易于管理的UI內容。 支持多種語言。 在這篇文章中&#xff0c;將為Eclipse和Java項目提供一個簡短的i18n實際示…

SEO 百度后臺主動推送鏈接

實踐步驟&#xff0c;先用爬蟲程序將本網站的所有連接爬取出來&#xff0c;再用python文件處理程序把爬蟲來的東東整理成一行一個鏈接的文本格式。再用postman接口測試工具&#xff0c;使用post方式&#xff0c;將所有的鏈接post過去&#xff0c;這樣主動推送是最為快速的提交方…

linux版本 如何查kali_000_Kali Linux版本查看和apt源配置

1.查看系統版本# cat /etc/issue# lsb_release -a2.查看內核信息# uname -a3.更新源# cp /etc/apt/source.list{,.bak}# vim /etc/apt/sources.list//備注&#xff1a;國外源速度太慢&#xff0c;這里禁止&#xff1b;網絡中的部分源已經過期&#xff0c;建議更換其它源。# kal…

nyoj--127--星際之門(一)(生成樹的數量)

星際之門&#xff08;一&#xff09; 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;3描述公元3000年&#xff0c;子虛帝國統領著N個星系&#xff0c;原先它們是靠近光束飛船來進行旅行的&#xff0c;近來&#xff0c;X博士發明了星際之門&…

Oracle 常用的一些函數

字符函數 SELECT UPPER(hello WORLD) FROM DUAL; //將小寫字母變為大寫字母SELECT LOWER(hello WORLD) FROM DUAL; //將大寫字母變為小心字母SELECT INITCAP(hello WORLD) FROM DUAL; //將字符串的首字母大寫SELECT CONCAT(hello, world) FROM DUAL; //字符串拼…

Apache Camel 2.9發布–十大變化

在2011年的最后一天&#xff0c;阿帕奇駱駝制品被成功地推到了中央行銷倉庫&#xff0c;距離香檳酒瓶破裂并進入2012年僅1.5個小時之遙。 2.9版是創紀錄的發行版&#xff0c;自5個月前發布2.8版以來&#xff0c;已解決了約500張JIRA票證。 以下是10個最明顯的改進和新功能的分…

HTML5筆記——formData

注&#xff1a;formData中的數據在控制臺上的console里面是打印不出來的&#xff0c;只能在控制臺的network里面查看到具體的發送數據和發送選項 文章出處&#xff1a;夢想天空 XMLHttpRequest Level 2 添加了一個新的接口——FormData。利用 FormData 對象&#xff0c;我們可以…

JavaScript 學習隨記——==和===及常見元素的真假值

“” 和 “” 符合的使用 <script>/*** 表示可以經過自動轉換&#xff0c;比較的是數值*///example01if(1 true && false 0 && true 1){console.log(1true);console.log(" 比較的是等號兩邊數據的值是否相等&#xff08;可以經過自動轉換&#…

運維祈求不宕機_[國慶特輯] 程序員應該求誰保佑才能保證不宕機?

一年國慶又到&#xff5e;程序猿、運維工程師、利用假期該結婚的結婚&#xff0c;該回老家的回老家。產品經理、項目經理們也要出國旅游了(好像這次是去東京玩)&#xff0c;并且叮囑一定要安排好值班表。我是個程序員&#xff0c;我也想出國旅游&#xff0c;卻覺得有點兒貴。多…

Oracle Weblogic 11g(10.3.4)的小知識

本周&#xff0c;我將為Weblogic進行許多設置和配置&#xff08;我猜是開發人員&#xff09;。 在過去的4年中&#xff0c;我一直在與Weblogic合作&#xff0c;并且我不得不承認-與Eclipse類似-我已經開始使用它。 我曾經是Netbeans / JBoss開發人員&#xff0c;后來轉向Eclips…

java中HashMap的用法

重點介紹HashMap。首先介紹一下什么是Map。在數組中我們是通過數組下標來對其內容索引的&#xff0c;而在Map中我們通過對象來對對象進行索引&#xff0c;用來索引的對象叫做key&#xff0c;其對應的對象叫做value。在下文中會有例子具體說明。 再來看看HashMap和TreeMap有什么…

關于 MVCC 的基礎

作為第一篇對 MVCC 的學習材料&#xff0c;以下內容翻譯自 Wikipedia。 1. 什么是MVCC 1.1 基礎概念 MVCC&#xff0c;Multi-Version Concurrency Control&#xff0c;多版本并發控制。MVCC 是一種并發控制的方法&#xff0c;一般在數據庫管理系統中&#xff0c;實現對數據庫的…

集成測試CDI 1.0和Spring 3.1中的作用域bean

在這篇博客文章中&#xff0c;我描述了如何在Spring和CDI中使用作用域bean進行集成測試。 一切都用小代碼示例進行說明。 使用范圍進行集成測試并不是特別容易。 想象一下存在于會話范圍內的bean&#xff0c;例如UserCredentials 。 在集成測試中&#xff0c;通常沒有HttpReque…

JavaScript學習隨記——數組一

數組的創建及length屬性 <script type"text/javascript" charset"utf-8">// 數組創建方式一,此種方式寫的時候比較麻煩var arrnew Array();// 數組創建方式二var arr [1,2,3,4,true,str,new Date()];console.log("arr.length&#xff1a;"…

USACO milk4 枚舉答案再檢驗

剛開始寫了一個暴力的dfs超時了&#xff0c; 最后看了下題解說是先枚舉答案再判斷&#xff0c;然后就寫了雙dfs&#xff0c;全部秒殺&#xff0c;代碼如下&#xff1a; /*ID: m1500293LANG: CPROG: milk4 */ #include <cstdio> #include <cstring> #include <al…

微信小程序常見問題集合(長期更新)

最新更新&#xff1a; 新手跳坑系列&#xff1a;推薦閱讀&#xff1a;《二十四》request:fail錯誤&#xff08;含https解決方案&#xff09;&#xff08;真機預覽問題 跳坑指南《七十》如何讓微信小程序服務類目審核通過跳坑六十九&#xff1a;uploadFile:fail Error: unable t…

mysql指令按順序排列_mysql基本語法大全

1.備份數據庫&#xff1a;1.1備份數據庫中的表:mysqldump -u root -p test a b >d:\bank_a.sql//分別備份數據庫test下a和b表1.2備份一個數據庫mysqldump -u root -p test > d:\testbk.sql1.3備份多個數據庫mysqldump -u root -p --databases test mysql > D:\data.sq…