SQLServer 如何收集数据以排除 SQL 死锁问题
2024-09-06 13:12 abce 阅读(99) 评论(2) 编辑 收藏 举报
方案一
使用 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