SQL Server超时诊断
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,连接超时对于连接超时,首先可以查看Connectivity Ring Buffer中的LoginTimers类型错误来分析,如果想获得更详尽的信息,再通过抓包工具network monitor。具体方
千家信息网最后更新 2025年11月17日SQL Server超时诊断
连接超时
对于连接超时,首先可以查看Connectivity Ring Buffer中的LoginTimers类型错误来分析,如果想获得更详尽的信息,再通过抓包工具network monitor。
具体方法和语句可参考以下文章:
https://blogs.msdn.microsoft.com/apgcdsd/2011/11/20/ring-buffersql-server-2008/
http://ultrasql.blog.51cto.com/9591438/1583446
查询超时
对于查询超时,针对SQL Server 2012以下的版本,使用Profiler的TSQL_Duration模板的基础上,添加"Errors and Warnings"下的"Attention",根据捕获到的Attention结合上下文去查找相应的语句;对于SQL Server 2012及以上版本,直接使用扩展事件监控sqlserver.attention事件,直接输出sql_text。
以下为XE脚本:
use tempdb go if exists (select * from sys.objects where name = 'sqlws_xev_attention') drop view sqlws_xev_attention go create view sqlws_xev_attention as with xevents (event_data) as ( select event.query('.') as event_data from ((select cast (xest.target_data as xml) as target_data from sys.dm_xe_sessions as xes inner join sys.dm_xe_session_targets as xest on (xes.address = xest.event_session_address) where xes.name = 'sqlws_xevents_attention' and xest.target_name = 'ring_buffer') as td cross apply target_data.nodes ('//event[@name="attention"]') as x (event)) ) select event_data.value ('(event/@name)[1]', 'varchar(max)') as event_name, event_data.value ('(event/@timestamp)[1]', 'datetime') as event_timestamp, event_data.value ('(event/data[@name="duration"]/value)[1]', 'bigint') as [duration], event_data.value ('(event/data[@name="request_id"]/value)[1]', 'int') as [request_id], event_data.value ('(event/action[@name="client_app_name"]/value)[1]', 'nvarchar(max)') as action_client_app_name, event_data.value ('(event/action[@name="client_hostname"]/value)[1]', 'nvarchar(max)') as action_client_hostname, event_data.value ('(event/action[@name="database_name"]/value)[1]', 'nvarchar(max)') as action_database_name, event_data.value ('(event/action[@name="nt_username"]/value)[1]', 'nvarchar(max)') as action_nt_username, event_data.value ('(event/action[@name="session_id"]/value)[1]', 'int') as action_session_id, event_data.value ('(event/action[@name="sql_text"]/value)[1]', 'nvarchar(max)') as action_sql_text from xevents go if exists (select * from sys.server_event_sessions where name = 'sqlws_xevents_attention') drop event session sqlws_xevents_attention on server go create event session sqlws_xevents_attention on server add event sqlserver.attention (action (sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.database_name, sqlserver.nt_username, sqlserver.session_id, sqlserver.sql_text) where duration > 5000 ) add target package0.ring_buffer with (event_retention_mode = ALLOW_SINGLE_EVENT_LOSS, memory_partition_mode = NONE) go /* alter event session sqlws_xevents_attention on server state = start go --Execute your workload with xevents (event_name) as ( select event.value ('(@name)[1]', 'varchar(max)') as event_name from ((select cast (xest.target_data as xml) as target_data from sys.dm_xe_sessions as xes inner join sys.dm_xe_session_targets as xest on (xes.address = xest.event_session_address) where xes.name = 'sqlws_xevents_attention' and xest.target_name = 'ring_buffer') as td cross apply target_data.nodes ('//event[@name="attention"]') as x (event)) ) select event_name, count(*) from xevents group by event_name go select * from sqlws_xev_attention go alter event session sqlws_xevents_attention on server state = stop go */调优建议
对于连接耗时,当然务必要找到具体原因,是网络问题还是验证问题;对于查询超时,多为语句性能问题导致,如阻塞、未使用合理的索引、输出数据量太大等原因。对于临时解决问题,可以在连接配置里、或在程序里的语句级参数属性调大配置值。当然应及时找出问题的根源并解决。
问题
语句
查询
事件
原因
版本
输出
配置
详尽
上下
上下文
信息
参数
基础
属性
工具
建议
性能
数据
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器部件
安全播出期间网络安全工作
求手机版躲猫猫服务器
高中生网络安全常
帝国后台数据库配置
江都租房软件开发
数据库怎么输入表格
服务器登录页面怎么重启
数据库链接失效怎样填写
韩国服务器管理
网络安全扎实开展
找工程设计用什么数据库
南山学院软件开发
一加手机服务器繁忙
崇明区网络软件开发信息中心
网络安全靠大家手抄报简单又美丽
湖北生活频道教育与网络安全
怎么把ftp服务器
住建委信用数据库
导入db2所有数据库
网游服务器下载
国家网络安全宣传板
电梯服务器通用吗
青海hp服务器虚拟化操作
服务器虚拟机远程桌面登录权限
做题软件开发
安徽东塔安全网络安全
内存型数据库
深圳小鲸鱼网络技术有限公司
数据库构成情报