初涉SQL Server性能问题(3/4):列出阻塞的会话
在 初涉SQL Server性能问题(2/4)里,我们讨论了列出等待资源或正运行的会话脚本。这篇文章我们会看看如何列出包含具体信息的话阻塞会话清单。
1 /******************************************************************************************/ 2 CREATE FUNCTION [dbo].dba_GetStatementForSpid 3 ( 4 @spid SMALLINT 5 ) 6 RETURNS NVARCHAR(4000) 7 BEGIN 8 DECLARE @SqlHandle BINARY(20) 9 DECLARE @SqlText NVARCHAR(4000) 10 SELECT @SqlHandle = sql_handle 11 FROM sys.sysprocesses WITH (nolock) WHERE spid = @spid 12 SELECT @SqlText = [text] FROM 13 sys.dm_exec_sql_text(@SqlHandle) 14 RETURN @SqlText 15 END 16 GO 17 18 /***************************************************************************************** 19 STEP 4: List the current blocking session information 20 ****************************************************************************************/ 21 22 SELECT 23 es.session_id, 24 es.HOST_NAME, 25 DB_NAME(database_id) AS DatabaseName, 26 CASE WHEN es.program_name LIKE '%SQLAgent - TSQL JobStep%' THEN (SELECT 'SQL AGENT JOB: '+name FROM msdb..sysjobs WHERE job_id=MASTER.DBO.ConvertStringToBinary (LTRIM(RTRIM((SUBSTRING(es.program_name,CHARINDEX('(job',es.program_name,0)+4,35)))))) 27 ELSE es.program_name END AS program_name , 28 es.login_name , 29 bes.session_id AS Blocking_session_id, 30 MASTER.DBO.dba_GetStatementForSpid(es.session_id) AS [Statement], 31 bes.HOST_NAME AS Blocking_hostname, 32 CASE WHEN Bes.program_name LIKE '%SQLAgent - TSQL JobStep%' THEN 33 (SELECT 'SQL AGENT JOB: '+name FROM msdb..sysjobs WHERE job_id= 34 MASTER.DBO.ConvertStringToBinary 35 (LTRIM(RTRIM((SUBSTRING(Bes.program_name,CHARINDEX('(job',es.program_name,0)+4,35)))))) 36 ELSE Bes.program_name END AS Blocking_program_name, 37 bes.login_name AS Blocking_login_name, 38 MASTER.DBO.dba_GetStatementForSpid(bes.session_id ) AS [Blocking Statement] 39 FROM sys.dm_exec_requests S 40 INNER JOIN sys.dm_exec_sessions es ON es.session_id=s.session_id 41 INNER JOIN sys.dm_exec_sessions bes ON bes.session_id=s.blocking_session_id
这个脚本会列出被阻塞和正阻塞的语句信息,帮助我们进行问题分析。下面的脚本会帮助我们列出已经打开事务但未活动的会话,即打开事务,但上30秒内都没执行任何语句的会话。
1 /***************************************************************************************** 2 STEP 4: List the Open session with transaction which is not active 3 ****************************************************************************************/ 4 SELECT es.session_id, 5 es.login_name, 6 es.HOST_NAME, 7 DB_NAME(SP.dbid) AS DatabaseName, 8 sp.lastwaittype, 9 est.TEXT,cn.last_read, 10 cn.last_write, 11 CASE WHEN es.program_name LIKE '%SQLAgent - TSQL JobStep%' THEN(SELECT 'SQL AGENT JOB: '+name FROM msdb..sysjobs WHERE job_id=MASTER.DBO.ConvertStringToBinary (LTRIM(RTRIM((SUBSTRING(es.program_name,CHARINDEX('(job',es.program_name,0)+4,35))))) 12 )ELSE es.program_name END AS program_name 13 FROM sys.dm_exec_sessions es 14 INNER JOIN sys.dm_tran_session_transactions st ON es.session_id = st.session_id INNER JOIN sys.dm_exec_connections cn ON es.session_id = cn.session_id 15 INNER JOIN sys.sysprocesses SP ON SP.spid=es.session_id 16 LEFT OUTER JOIN sys.dm_exec_requests er ON st.session_id = er.session_id 17 AND er.session_id IS NULL 18 CROSS APPLY sys.dm_exec_sql_text(cn.most_recent_sql_handle) est 19 WHERE (DATEDIFF(SS,cn.last_read,GETDATE())+DATEDIFF(SS,cn.last_write,GETDATE()))>30 20 AND lastwaittype NOT IN ('BROKER_RECEIVE_WAITFOR' ,'WAITFOR') 21 GO
初涉SQL Server性能问题(3/4):列出阻塞的会话相关推荐
- sql server服务器 性能,初涉SQL Server性能问题(1/4):服务器概况
当你作为DBA时,很多人会向你抱怨:"这个程序数据加载和蜗牛一样,你看看是不是服务器出问题了?"造成这个问题的原因有很多.可能是程序应用服务器问题,网络问题,程序实现方式问题,数据 ...
- 初涉SQL Server性能问题(1/4):服务器概况
原文:初涉SQL Server性能问题(1/4):服务器概况 当你作为DBA时,很多人会向你抱怨:"这个程序数据加载和蜗牛一样,你看看是不是服务器出问题了?"造成这个问题的原因有很 ...
- SQL SERVER性能分析--死锁检测数据库阻塞语句
http://www.byywee.com/page/M0/S218/218189.html 转载于:https://www.cnblogs.com/BrianLee/p/3250136.html
- SQL Server通过动态视图里查找阻塞超过30秒的会话
SQL Server通过动态视图里查找阻塞的会话 简介 对于阻塞我们可以通过动态视图dm_exec_requests.dm_tran_locks等关联通过构建递归式树形结构来查找出阻塞超过30秒的会话 ...
- SQL Server 性能优化之——系统化方法提高性能
原文 http://www.cnblogs.com/BoyceYang/archive/2013/06/15/3138142.html 阅读导航 1. 概述 2. 规范逻辑数据库设计 3. 使用高效索 ...
- 使用Windows Performance Monitor进行SQL Server性能调整
Windows Performance Monitor basics article, we described the most important Windows Performance Moni ...
- SQL Server 性能调优3 之索引(Index)的维护
SQL Server 性能调优3 之索引(Index)的维护 热度1 评论 16 作者:溪溪水草 SQL Server 性能调优3 之索引(Index)的维护 前言 前一篇的文章介绍了通过建立索引来提 ...
- Sql Server 性能分析4 –数据库大小,数据库表大小综合性分析报表输出
Sql Server 性能分析4 –数据库大小,数据库表大小综合性分析报表输出 一:MS SQL Report Server 报表的制作. 1.打开Microsoft Visual Studio 20 ...
- SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践
SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践 前言:自从上一篇文章发出之后,收到了很朋友的关注.很多朋友要求多多实践,而不是纯粹的理论.确实,从打算出这个系列开始,我就本 ...
最新文章
- 站长们 技术不是你生存的全部
- whireshark过滤器学习与使用
- php考察新人的题目,PHP面试指南2020-sql考察题
- 一个关于pynoi游戏的C语言编程
- 服务器在行例维护中,8月14日服务器例行维护公告
- pyqt5的runJavaScript 使用模板
- 计算机相关专业“Python程序设计”教学大纲(参考)
- ASP.NET MVC使用log4net
- [知乎] 端游、手游服务端架构演变
- easymock接口模拟_EasyMock部分模拟
- vim批量删除与插入
- 【010Editor】010Editor使用技巧汇总(不断更新中)
- 11中常见的句法成分
- 蓝牙inquiry流程之HCI_Inquiry_Result_With_RSSI和HCI Extended Inquiry Result处理
- Blowfish简介
- 100天带你系统入门VR/AR游戏开发,成为5G时代的“头号玩家”
- 【观察】维谛技术(Vertiv):数据中心群落化演进,背后的专业价值释放
- 2016年最受注目的网络技术关键词预测
- 巧用天翼云盘备份云主机数据
- 阿里云视频服务(视频边缘智能服务)接入流程