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'
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对开心学习网的支持。
- sql怎么取随机数(SQLServer 使用rand获取随机数的操作)
- sqlserver备份还原数据(通过Windows批处理命令执行SQL Server数据库备份)
- sqlserver如何添加数据库(sqlserver建立新用户及关联数据库教程)
- sqlserver2000安装之后在哪打开(SQL2000安装后,SQL Server组无项目解决方法)
- sqlserver基础数据类型(SQL Server中T-SQL 数据类型转换详解)
- sqlserverlog原理(sql server中错误日志errorlog的深入讲解)
- SqlServer2016模糊匹配的三种方式及效率问题简析(SqlServer2016模糊匹配的三种方式及效率问题简析)
- 修改sqlserver数据库名称步骤(SQL server数据库创建代码 filegroup文件组修改的示例代码)
- sqlserver语句中的temp(SQL SERVER中强制类型转换cast和convert的区别详解)
- sql中去除重复记录的关键字(sqlserver查询去掉重复数据的实现)
- sqlserver2016使用教程(SQL Server 2016 Alwayson新增功能图文详解)
- sqlserverdatetime时区(解析SQL Server中datetimeset转换datetime类型问题)
- sqlserver两表查询语句格式(sql server实现在多个数据库间快速查询某个表信息的方法)
- sqlserver日志目录是否过大(SQL Server利用sp_spaceused如何查看表记录存在不准确的情况)
- sqlserver2012海量数据查询(SQL Server 2012 多表连接查询功能实例代码)
- sqlserver纵表变横表(SQL Server行转列的方法解析)
- 怎么快速学好英语(怎么快速学好英语初中)
- 中国留学生都是富二代吗()
- 我们现在吃的苹果是哪里来的 原来现代苹果引入中国仅有一百多年(我们现在吃的苹果是哪里来的)
- 买绿宝不能只挑黄绿色 菜农教你3招挑,个个皮薄肉脆,香甜爆汁(买绿宝不能只挑黄绿色)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
热门推荐
- 宝塔linux面板部署防火墙后网页打不开报http564错误的解决办法(宝塔linux面板部署防火墙后网页打不开报http564错误的解决办法)
- dede内容模型管理(Dede网站修改模板路径的方法 拒绝模板泄漏被盗)
- mysql查看视图注释(详解MySQL的sql_mode查询与设置)
- sqlserver如何可视化表(sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日)
- 常见的web应用服务器有哪些(常用的web服务器软件整理)
- sql怎么写递归(sql server实现递归查询的方法示例)
- 微信html隐藏功能(使用Html5多媒体实现微信语音功能)
- php验证码图解(php/JS实现的生成随机密码验证码功能示例)
- js使用canvas(JavaScript canvas实现七彩时钟效果)
- python中读取文件怎么操作(Python实现的读取文件内容并写入其他文件操作示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9