USE Master
GO

declare
@spid int
;

select
@spid = 419--null:all
;

;WITH DATA(spid,blockRelationship,blocked,spidLevel,hostname,program_name,loginame,login_time,BlockDuration,Status,sqlText,Memo,stmt_start,stmt_end,db_Name)
AS(
SELECT spid
,CONVERT(VARCHAR(256),' ') AS blockRelationship
,blocked
,spidLevel = 1
,hostname
,program_name
,loginame
,A.login_time
,DATEDIFF(MINUTE,A.login_time,GETDATE()) AS BlockDuration
,A.Status
,B.text
,Memo = CONVERT (varchar(128), 'BlockRoot')
,A.stmt_start
,A.stmt_end
,db_name(A.dbid) AS db_Name
FROM sys.sysprocesses AS A WITH (NOLOCK)
CROSS APPLY sys.dm_exec_sql_text(A.sql_handle) AS B
WHERE Blocked = 0
UNION ALL
SELECT
A.spid
,CONVERT(varchar(128),REPLICATE('L' ,B.spidLevel)) + CONVERT (varchar(128), A.blocked) AS Sort
,A.blocked
,spidLevel+1
,A.hostname
,A.program_name
,A.loginame
,A.login_time
,DATEDIFF(MINUTE,A.login_time,GETDATE()) AS BlockDuration
,A.Status
,C.text
,Memo = 'Blocked by ' + CONVERT (varchar(117), A.blocked)
,A.stmt_start
,A.stmt_end
,db_name(A.dbid) AS db_Name
FROM sys.sysprocesses AS A WITH (NOLOCK)
INNER JOIN DATA AS B
ON A.blocked = B.spid
CROSS APPLY sys.dm_exec_sql_text(A.sql_handle) AS C
--WHERE B.blocked = 0
)
SELECT spid
,blockRelationship
,blocked
,login_time
,GETDATE() AS [current_time]
,sql_statement = (SELECT TOP 1 SUBSTRING(sqlText,stmt_start / 2+1 ,
(
(
CASE WHEN stmt_end = -1 THEN (LEN(CONVERT(nvarchar(max),sqlText)) * 2)
ELSE stmt_end END
) - stmt_start) / 2+1
)
)
,db_Name
,spidLevel
,hostname
,loginame
,program_name
--,login_time
,BlockDuration
,status
,sqlText
,Memo
FROM DATA
--the block root spid
WHERE spidLevel = 1
AND spID IN(
SELECT blocked
FROM DATA
)
UNION ALL
SELECT spid
,blockRelationship
,blocked
,login_time
,GETDATE()
,sql_statement = (SELECT TOP 1 SUBSTRING(sqlText,stmt_start / 2+1 ,
(
(
CASE WHEN stmt_end = -1 THEN (LEN(CONVERT(nvarchar(max),sqlText)) * 2)
ELSE stmt_end END
) - stmt_start) / 2+1
)
)
,db_Name
,spidLevel
,hostname
,loginame
,program_name
--,login_time
,BlockDuration
,status
,sqlText
,Memo
FROM DATA
WHERE spidLevel > 1

--kill 68

IF @spid is not null

SELECT
database_name = DB_NAME(s1.dbid)
,sql_statement = (SELECT TOP 1 SUBSTRING(s2.text,stmt_start / 2+1 ,
(
(
CASE WHEN stmt_end = -1 THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE stmt_end END
) - stmt_start) / 2+1
)
)
,s2.text
,Duration_min = DATEDIFF(MINUTE,s1.login_time,GETDATE())
,s1.hostname
,s1.status
,s1.cpu
FROM sys.sysprocesses AS s1 WITH(NOLOCK)
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s1.spid = @spid;

--kill 87

查看指定spid的脚本当前运行情况和状态的更多相关文章

  1. 将shell脚本运行情况写入Rsyslog日志server

    在运维工作中,免不了编写一些脚本交由计划任务(cron)去定时运行完毕一些日常工作,实现运维工作自己主动化.比方在我的日常工作中备份数据是一项重要的工作,须要定时将数据备份到备份服器和一些其它的备份介 ...

  2. npm run start失败&Node.js 查询指定端口运行情况及终止占用端口办法

    缘由: node.js项目中运行npm run start命令脚本报错,No such file or directory 最开始以为是命令脚本找不到所谓的执行路径,但后面发现不是,是package. ...

  3. top---实时动态地查看系统的整体运行情况

    top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具.通过top命令所提供的互动式界面,用热键可以管理. 语法 top(选项) 选项 -b:以批处理模式 ...

  4. 如何通过web查看job的运行情况

    当我们将作业提交到hadoop 的集群上之后,我们会发现一个问题就是无法通过web查看job运行情况,比如启动了多少个map任务,启动多少个reduce任务啊,分配多少个conbiner等等.这些信息 ...

  5. Linux下查看Go语言软件运行情况

    在Linux下,使用"jps"可以查看用Java语言写的软件的运行情况,如果要查看GO语言写的软件的运行情况,可以使用"gops",但这不是系统自带的,需要进行 ...

  6. Centos flock 防止脚本重复运行

    如果crontab设定任务每分钟执行一次,但执行的任务需要花费5分钟,这时系统会再执行导致两个相同的任务在执行.发生这种情况下可能会出现一些并发问题,严重时会导致出现脏数据性能瓶颈等恶性循环.为了防止 ...

  7. windows下使用adb工具查看android程序cpu和内存消耗情况

    在实际的开发当中,尤其软件运行在一个硬件设备比较差的环境下,对软件占用资源大的问题是开发者们必须要解决的问题,系统比较卡.觉得应该看看程序的cpu和内存消耗 一直以来都在windows下编程,已经习惯 ...

  8. Linux查看CPU、内存、进程使用情况(转)

    在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...

  9. Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

随机推荐

  1. Add to Array-Form of Integer LT989

    For a non-negative integer X, the array-form of X is an array of its digits in left to right order.  ...

  2. 获取input输入框中的值的方法

    方法一:获取input的文本值 <input class="form-text-normal" id="txtName" name="Name& ...

  3. fetch获取json的正确姿势

    fetch要求参数传递,遇到请求无法正常获取数据,网上其他很多版本类似这样: fetch(url ,{ method: 'POST', headers:{ 'Accept': 'application ...

  4. 用windows计划任务执行一些内容的写法,

    用windows计划任务执行一些内容的写法, 以下示例: 1.创建ws对象 2.关闭java进程 3.执行bat文件 start.vbe文件内容 set ws=wscript.createobject ...

  5. 核心一:IoC

    IoC 1.中文名称:控制反转 2.英文名称:(Inversion of Control) 3.IoC是什么? 3.1 IoC 完成的事情原先由程序员主动通过new 实例化对象事情,转交给Spring ...

  6. 2018.10.25 bzoj4565: [Haoi2016]字符合并(区间dp+状压)

    传送门 当看到那个k≤8k\le 8k≤8的时候就知道需要状压了. 状态定义:f[i][j][k]f[i][j][k]f[i][j][k]表示区间[i,j][i,j][i,j]处理完之后的状态为kkk ...

  7. OpenCV(1):显示图像

    显示图像 #include<iostream> #include<opencv2/core/core.hpp> #include<opencv2/highgui/high ...

  8. 牛客训练:小a与黄金街道(欧拉函数+快速幂)

    题目链接:传送门 思路:欧拉函数的性质:前n个数的欧拉函数之和为φ(n)*n/2,由此求出结果. 参考文章:传送门 #include<iostream> #include<cmath ...

  9. .NET性能优化(文摘)

    第1章 性能指标 1.1 性能目标 1.2 性能指标 第2章 性能度量 2.1 性能度量方式 白盒测试-小程序 黑盒测试-大型程序 2.2 Windows内置工具 2.2.1 性能计数器 2.2.2  ...

  10. 端口报错listen eaddrinuse:::xxx

    端口报错 listen eaddrinuse:::xxx 表示这个端口被占用 结束正在使用此端的程序即可.