sqlserver定时计划(sql server deadlock跟踪的4种实现方法)
sqlserver定时计划
sql server deadlock跟踪的4种实现方法前言
最近写程序常会遇到deadlock victim,每次一脸懵逼。研究了下怎么跟踪,写下来记录下。文中介绍的非常详细,对大家具有一定的参考学习价值,下面话不多说了,来一起看看详细的介绍吧
建测试数据
CREATE DATABASE testdb; GO USE testdb; CREATE TABLE table1 ( id INT IDENTITY PRIMARY KEY, student_name NVARCHAR(50) ) INSERT INTO table1 values ('James') INSERT INTO table1 values ('Andy') INSERT INTO table1 values ('Sal') INSERT INTO table1 values ('Helen') INSERT INTO table1 values ('Jo') INSERT INTO table1 values ('Wik') CREATE TABLE table2 ( id INT IDENTITY PRIMARY KEY, student_name NVARCHAR(50) ) INSERT INTO table2 values ('Alan') INSERT INTO table2 values ('Rik') INSERT INTO table2 values ('Jack') INSERT INTO table2 values ('Mark') INSERT INTO table2 values ('Josh') INSERT INTO table2 values ('Fred')
第一段sql,先运行只更新table1部分
USE testdb; -- Transaction1 BEGIN TRAN UPDATE table1 SET student_name = student_name + 'Transaction1' WHERE id IN (1,2,3,4,5) UPDATE table2 SET student_name = student_name + 'Transaction1' WHERE id = 1 COMMIT TRANSACTION
第二段sql,只运行更新table2部分
USE testdb; -- Transaction2 BEGIN TRAN UPDATE table2 SET student_name = student_name + 'Transaction2' WHERE id = 1 UPDATE table1 SET student_name = student_name + 'Transaction2' WHERE id IN (1,2,3,4,5) COMMIT TRANSACTION
再运行,第一段sql更新table2,运行第二段sql更新table1,死锁问题重现。
说下跟踪死锁的方法:
1.使用trace log跟踪,执行如下sql开启1222和1204 flag,死锁信息会在sql server 日志中输出。
DBCC TRACEON (1204, -1) DBCC TRACEON (1222, -1)
下图是1204输出的信息
下图是1222输出的信息
2.使用sql server profiler进行跟踪
点击Tools -> sql server profiler 选择sql locks模板
运行当发生死锁时会自动捕获,点击dead lock paragraph查看死锁
3.使用扩展事件跟踪,方法只适用于sql server 2012版本,08r2版本无法直接使用。
依次点击Management -> Extended Events - >system health - >package0.event_file
输入deadlock回车,可以点击details 把内容另存为xdl文件再打开,或点击deadlock查看图
4.使用windows性能计数器检测到死锁再去sql中查询
命令行输入:perfmon 或者 perfmon /sys
选择实例:SQL Server :Locks \\ Number of DeadLocks/sec \\ _Total
实时查看:
下面的查询提供了自从上次重启以来在本服务器上发生的所有死锁:
SELECT cntr_value AS NumOfDeadLocks
FROM sys.dm_os_performance_counters
WHERE object_name = 'SQLServer:Locks'
AND counter_name = 'Number of Deadlocks/sec'
AND instance_name = '_Total'
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对开心学习网的支持。
- sqlserver安装使用教程(SQL Server 2019下载与安装教程自定义安装)
- sqlserver数据库还原教程(SQL Server通过重建方式还原master数据库)
- sqlserver小结(基于sqlserver的四种分页方式总结)
- sqlserver2012知识点(SQL Server 2012 安全概述)
- sqlserver限制windows身份登录(解决sql server 数据库,sa用户被锁定的问题)
- sqlserver表空间占用率(SQL Server获取磁盘空间使用情况)
- sqlserver数据类型和长度(SqlServer 数据库 三大 范式)
- sqlserver2016的安装(Sql Server2016 正式版安装程序图解教程)
- sqlserver创建表结构时添加约束(SQL Server 通过with as方法查询树型结构)
- sqlserver2012登录出现报错18456(SQL Server 2012 sa用户登录错误18456的解决方法)
- sqlserver2008手动备份方法(MSSQL 2008 自动备份数据库的设置方法)
- sqlserver自增字段(SQL Server中identity自增的用法详解)
- sqlserver如何生成xml文件(实现SQL Server 原生数据从XML生成JSON数据的实例代码)
- SQLServer数据库从高版本降级到低版本实例详解(SQLServer数据库从高版本降级到低版本实例详解)
- sql server查询操作怎么做(sqlserver分页查询处理方法小结)
- 怎么开放sql server端口(SQLServer2019配置端口号的实现)
- 专访 《紧急公关》折射现实生态 主演黄晓明 理性看待 向往美好(紧急公关折射现实生态)
- 庆余年剧组重聚王牌5,宋轶神秘消失,肖战出现一秒抢了李纯风头(庆余年剧组重聚王牌5)
- 巴厘岛旅游攻略(巴厘岛旅游攻略7天多少钱)
- 文莱旅游攻略(文莱旅游攻略介绍)
- 马来西亚旅游攻略(马来西亚旅游攻略自由行攻略)
- 缅甸旅游攻略(缅甸旅游攻略必去景点推荐)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9