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

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

时间:2024-09-06 13:14:02浏览次数:5  
标签: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
    1.下载Mysql打开官网下载地址:https://downloads.mysql.com/archives/community/,按照截图所示下载即可。选择对应的操作系统Windows安装 1.下载到本地的安装包是zip包,选择一个指定目录进行解压,解压的过程就是安装的过程,解压后的位置就是MySQL的安装位置。注意,安装目录不允许......
  • 小皮出现80端口被System占用以及Mysql服务无法启动的解决方法
    80端口被System占用的解决方法80端口一般被当做网页服务器的默认端口,使用本机搭建服务器环境的时候,都会默认使用80端口来作为网页访问端,但是有的时候80端口会被其他程序占用,导致Apache启动失败。下面介绍一下如果80端口被占用后应该如何处理。经过查询,发现占用80端口的确是......
  • mysql索引优化
      1.联合索引,注意最左匹配原则:必须按照从左到右的顺序匹配,MySQL会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a=1andb=2andc>3andd=4如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意......
  • 美团面试:mysql 索引失效?怎么解决? (重点知识,建议收藏,读10遍+)
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • mysql分库表实现大宽表逻辑-canal/es
    大宽表落地背景mysql分库分表后,很多页面查询操作不走分片键,会导致数据库压力很大,查询效率极低的问题场景设计:设计一张索引表,以下叫大宽表,将需要查询的业务字段放到一张表解耦业务逻辑,业务不需主动维护此表利用canal-admin/canal-developer/canal-adatper+rocketMq......
  • Python使用MySQL数据库
    安装MySQL-python要想使python可以操作mysql 就需要MySQL-python驱动,它是python 操作mysql必不可少的模块。下载地址:https://pypi.python.org/pypi/MySQL-python/下载MySQL-python-1.2.5.zip 文件之后直接解压。进入MySQL-python-1.2.5目录:>>python setup.py install ......
  • Mysql高级篇(上)—— Mysql架构介绍(二)
    Mysql高级篇(上)MySQL架构介绍(二)逻辑架构逻辑架构剖析MySQL8.0中SQL执行流程Linux环境下MySQL8.0中SQL执行原理MySQL语法顺序Oracle中SQL执行流程(了解)数据库缓存池bufferpool(了解)存储引擎常见存储引擎简述InnoDB和MyISAM两种存储引擎的特点对比MySQL架构介绍(二)......