原文:初涉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):列出阻塞的会话相关推荐

  1. sql server服务器 性能,初涉SQL Server性能问题(1/4):服务器概况

    当你作为DBA时,很多人会向你抱怨:"这个程序数据加载和蜗牛一样,你看看是不是服务器出问题了?"造成这个问题的原因有很多.可能是程序应用服务器问题,网络问题,程序实现方式问题,数据 ...

  2. 初涉SQL Server性能问题(1/4):服务器概况

    原文:初涉SQL Server性能问题(1/4):服务器概况 当你作为DBA时,很多人会向你抱怨:"这个程序数据加载和蜗牛一样,你看看是不是服务器出问题了?"造成这个问题的原因有很 ...

  3. SQL SERVER性能分析--死锁检测数据库阻塞语句

    http://www.byywee.com/page/M0/S218/218189.html 转载于:https://www.cnblogs.com/BrianLee/p/3250136.html

  4. SQL Server通过动态视图里查找阻塞超过30秒的会话

    SQL Server通过动态视图里查找阻塞的会话 简介 对于阻塞我们可以通过动态视图dm_exec_requests.dm_tran_locks等关联通过构建递归式树形结构来查找出阻塞超过30秒的会话 ...

  5. SQL Server 性能优化之——系统化方法提高性能

    原文 http://www.cnblogs.com/BoyceYang/archive/2013/06/15/3138142.html 阅读导航 1. 概述 2. 规范逻辑数据库设计 3. 使用高效索 ...

  6. 使用Windows Performance Monitor进行SQL Server性能调整

    Windows Performance Monitor basics article, we described the most important Windows Performance Moni ...

  7. SQL Server 性能调优3 之索引(Index)的维护

    SQL Server 性能调优3 之索引(Index)的维护 热度1 评论 16 作者:溪溪水草 SQL Server 性能调优3 之索引(Index)的维护 前言 前一篇的文章介绍了通过建立索引来提 ...

  8. Sql Server 性能分析4 –数据库大小,数据库表大小综合性分析报表输出

    Sql Server 性能分析4 –数据库大小,数据库表大小综合性分析报表输出 一:MS SQL Report Server 报表的制作. 1.打开Microsoft Visual Studio 20 ...

  9. SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践

    SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践 前言:自从上一篇文章发出之后,收到了很朋友的关注.很多朋友要求多多实践,而不是纯粹的理论.确实,从打算出这个系列开始,我就本 ...

最新文章

  1. 站长们 技术不是你生存的全部
  2. whireshark过滤器学习与使用
  3. php考察新人的题目,PHP面试指南2020-sql考察题
  4. 一个关于pynoi游戏的C语言编程
  5. 服务器在行例维护中,8月14日服务器例行维护公告
  6. pyqt5的runJavaScript 使用模板
  7. 计算机相关专业“Python程序设计”教学大纲(参考)
  8. ASP.NET MVC使用log4net
  9. [知乎] 端游、手游服务端架构演变
  10. easymock接口模拟_EasyMock部分模拟
  11. vim批量删除与插入
  12. 【010Editor】010Editor使用技巧汇总(不断更新中)
  13. 11中常见的句法成分
  14. 蓝牙inquiry流程之HCI_Inquiry_Result_With_RSSI和HCI Extended Inquiry Result处理
  15. Blowfish简介
  16. 100天带你系统入门VR/AR游戏开发,成为5G时代的“头号玩家”
  17. 【观察】维谛技术(Vertiv):数据中心群落化演进,背后的专业价值释放
  18. 2016年最受注目的网络技术关键词预测
  19. 巧用天翼云盘备份云主机数据
  20. 阿里云视频服务(视频边缘智能服务)接入流程

热门文章

  1. Create C++ Windows Forms Application in Visual Studio 2017
  2. SourceInsight-显示文件完整路径
  3. Nodejs随学随记(杂)
  4. python 日志输出模块--两种方法
  5. 【381天】我爱刷题系列140(2018.02.21)
  6. 3.实战HTML+CSS布局(实例入门篇)
  7. 思科路由器DHCP基础配置
  8. POJ_2001_Shortest Prefixes
  9. Go语言——怎样导入一个外部的包
  10. python基础day4