首页 > 数据库 >SQLServer 如何收集数据以排除 SQL 死锁问题

SQLServer 如何收集数据以排除 SQL 死锁问题

时间:2024-09-06 13:14:02浏览次数:15  
标签:trace 单击 SQLServer Server 死锁 SQL 日志

 

方案一

使用 SQL Profiler 跟踪工具捕获死锁数据:

1.登录 SQL Server Management Studio
2.单击工具、SQL Server Profiler,然后进行身份验证
3.单击"事件选择"选项。
4.取消选择所有选项。
5.单击以下两个选项:
·显示所有列
·显示所有事件框
6.展开锁。
7.选择以下内容:
·死锁图
·锁: 死锁
·锁: 死锁链
8.单击运行,等待出现的死锁。
9.单击停止。
10.单击文件,另存为,跟踪文件。
11.选择位置并保存文件。

 

方案二

使用trace标志和 SQL 错误日志捕获死锁数据。

开启trace标志

开启trace标志有两种方法:

要在 SQL 日志中捕获死锁信息,必须启用trace标志 1204、1222 和 3605。在收集日志之前,必须先打开这些标记。

在 SQL Management Studio 中运行下面的查询,确认它们是否为 ON = 1 或 OFF = 0:

DBCC TRACESTATUS (1204, 1222, 3605)

默认是关闭的。

 

可以通过以下的方式开启这些标志。

(1)临时开启

登录 SQL Server Management Studio,打开一个查询窗口。选择什么数据库并不重要。

要打开死锁跟踪标志,请运行以下查询:

dbcc traceon (1204,1222,3605,-1)

然后等待死锁发生,然后查看错误日志中的死锁信息。

要想关闭该trace标志,使用以下命令即可:

DBCC TRACK OFF (1204,1222,3605,-1)

sqlserver服务重启后,也会关闭trace标志。

(2)持久开启

将它们添加到 SQL Server 的启动参数中,即使重启 SQL Server,SQL 死锁跟踪也会保持开启。

登录操作系统,打开 SQL Server 配置管理器( SQL Server Configuration Manager)。

点击SQL Server Services。右击SQL Server (instance_name),选中属性,在启动参数中配置(Startup Parameters )。

输入"-T3605",然后点击"添加"按钮。重复上面的操作,添加"-T1204"和"-T1222"

最后,点击"应用"。

配置结束后,需要重启sqlserver服务,方可生效。

 

捕获错误日志

开启错误标志后,就可以捕获错误日志了,也有两种方法来捕获。根据问题发生的频率,可能需要等待一段时间才会出现更多死锁错误,并出现在 SQL 错误日志中。

(1)通过 SQL Server Management Studio控制台捕获

·登录 SQL Server Management Studio。

·打开管理、SQL Server 日志。

双击当前。如果需要过去日期的日志,请双击相应日期。

也可以选择导出。

(2)在磁盘上查找文件

SQL 错误日志的确切位置是可配置的,因 SQL 实例而异。

·登录到服务器,打开 SQL Server 配置管理器。

·单击 SQL Server Services。

·右键单击 SQL Server(instance_name),然后选择 Properties(属性)。

·单击 “启动参数 ”选项卡。

·在"现有参数"字段中查找与 SQL 错误日志位置相对应的行。

 

例如:

-eC:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\Log\ERRORLOG

 

标签:trace,单击,SQLServer,Server,死锁,SQL,日志
From: https://www.cnblogs.com/abclife/p/18397411

相关文章

  • My SQL 列转行操作
    原表结构如下,我们可以发现,“日运输量”和“车次”是在同一张表中相互独立的两个字段,即独立的两列数据,下面,我将系统中的测试数据以及代码全部放出来,以解释列转行的操作方法 原表数据库查询代码:1SELECT2yzrqAS运作日期,3DATE_FORMAT(yzrq,'%Y-%m')AS年月,......
  • Mysql多实例安装
    MySQL多实例的本质在一台机器上开启多个不同的MySQL实例,也就是各实例监听不同的端口,提供不同的服务。多个实例公用一套MySQL安装程序,启动程序和配置文件可以是一个也可以是多个(推荐多个);各自的数据文件隔离;逻辑上各实例彼此隔离。为什么要使用多实例?优缺点?物理机性能强大,单个......
  • Docker 安装mysql
    1、从docker hub上拉取镜像到本地#dockerpullmysql:5.62.如果是不加版本直接拉取的话,默认的是最新版本 #dockerpullmysql:latest默认拉取最新的版本3.启动:#dockerrun--namemysql-p3306:3306-eMYSQL_ROOT_PASSWORD="设置你的mysql的密码"-dmysql:5.6......
  • 美团面试:mysql 索引失效?怎么解决? (重点知识,建议收藏,读10遍+)
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • Mysql高级篇(上)—— Mysql架构介绍(二)
    Mysql高级篇(上)MySQL架构介绍(二)逻辑架构逻辑架构剖析MySQL8.0中SQL执行流程Linux环境下MySQL8.0中SQL执行原理MySQL语法顺序Oracle中SQL执行流程(了解)数据库缓存池bufferpool(了解)存储引擎常见存储引擎简述InnoDB和MyISAM两种存储引擎的特点对比MySQL架构介绍(二)......