通过创建一个系统存储过程sp_who_lock.sql。代码如下:

if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[sp_who_lock]')
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_who_lock]
GO
use master
go
create procedure sp_who_lock
as
begin
declare @spid int,@bl int,
@intTransactionCountOnEntry     int,
@intRowcount             int,
@intCountProperties         int,
@intCounter             int
create table #tmp_lock_who (
id int identity(1,1),
spid smallint,
bl smallint)
IF @@ERROR<>0 RETURN @@ERROR
insert into #tmp_lock_who(spid,bl) select  0 ,blocked
from (select * from sysprocesses where  blocked>0 ) a
where not exists(select * from (select * from sysprocesses
where  blocked>0 ) b
where a.blocked=spid)
union select spid,blocked from sysprocesses where  blocked>0
IF @@ERROR<>0 RETURN @@ERROR
-- 找到临时表的记录数
select     @intCountProperties = Count(*),@intCounter = 1
from #tmp_lock_who
IF @@ERROR<>0 RETURN @@ERROR
if    @intCountProperties=0
select '现在没有阻塞和死锁信息' as message
-- 循环开始
while @intCounter <= @intCountProperties
begin
-- 取第一条记录
select     @spid = spid,@bl = bl
from #tmp_lock_who where Id = @intCounter
begin
if @spid =0
select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10))
+ '进程号,其执行的SQL语法如下' else
select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'
DBCC INPUTBUFFER (@bl )
end
-- 循环指针下移
set @intCounter = @intCounter + 1
end
drop table #tmp_lock_who
return 0
end

需要的时候直接调用: sp_who_lock

转载于:https://blog.51cto.com/xiao53771/1336311

查出引起死锁的进程和SQL语句相关推荐

  1. MYSQL死锁之路 - 常见SQL语句的加锁分析

    这篇博客将对一些常见的 SQL 语句进行加锁分析,看看我们平时执行的那些 SQL 都会加什么锁.只有对我们所写的 SQL 语句加锁过程了如指掌,才能在遇到死锁问题时倒推出是什么锁导致的问题.在前面的博 ...

  2. MYSQL解决死锁之路 - 常见 SQL 语句的加锁分析

    目录 前言 一.基本的加锁规则 二.简单 SQL 的加锁分析 2.1 聚簇索引,查询命中 2.2 聚簇索引,查询未命中 2.3 二级唯一索引,查询命中 2.4 二级唯一索引,查询未命中 2.5 二级非 ...

  3. SQl语句的效率问题

    SQL语句效率   1. SQL优化的原则是:将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量.            调整不良SQL通常可以从以下几点切入:        ...

  4. oracle 查看连接数语句,Oracle数据库中查询连接数的实用sql语句

    查询数据库中的连接信息.其中SQL_COMMAND 是可以释放进程的sql语句: select   A.SID,B.SPID,A.SERIAL#,a.lockwait,A.USERNAME,A.OSU ...

  5. sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取

    sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取 原文:sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取 在多人开发中最头疼的是人少事多没有时间进行codereview ...

  6. oracle 根据spid查sql,探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句...

    Oracle数据库查看一个进程是如何执行相关的实际sql语句 代码如下: SELECT b.sql_text,sid,serial#,osuser,machine FROM v$session a,v ...

  7. Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)

    这篇文章主要介绍了Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)的相关资料,需要的朋友可以参考下 在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映.这个时候, ...

  8. mysql kill_Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)

    在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映.这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下: KILL [CONNECTION | ...

  9. 查看锁表进程SQL语句

    查看锁表进程SQL语句1: select sess.sid,     sess.serial#,     lo.oracle_username,     lo.os_user_name,     ao ...

最新文章

  1. 对象冒充_使用您的精神探照灯进行冒充冒名顶替综合症
  2. 个性化推荐系统研究热点之用户画像
  3. Java实现最小堆一
  4. 无刷新删除 Ajax,JQuery
  5. 家用计算机内存最大是多少,电脑支持最大内存是多少?选用多大内存才合理?方法技巧要知道...
  6. android中view刷新界面,Android view invalidate()使用
  7. atomic原子类实现机制_深入了解Java atomic原子类的使用方法和原理
  8. 涨知识 | 100个中国最难读的地名,第一个就折了
  9. akka的介绍_Akka笔记–演员介绍
  10. oracle安装 插件的执行方法失败_解决 VS Code 中 golang.org 被墙导致的 Go 插件安装失败问题...
  11. Java程序猿修炼之道 之 Logging(3/3) - 怎么分析Log
  12. leetcode 两个排序的中位数 python
  13. O2O营销方法有哪些 O2O营销模式的特点是什么?
  14. win10查看激活时间(Win10查看激活信息)
  15. 读取Xilinx FPGA芯片的唯一ID号DNA
  16. Chrome浏览器下调试和动态修改网页JavaScript
  17. Appium TestNg Maven Android Eclipse java简单启动实例
  18. Could not find any downloads that satisfy the requirement opencv-python
  19. 如何对音频文件进行剪辑
  20. 财富杂志:谷歌市场成功带来的10大启示

热门文章

  1. 三维空间长度温度数量_罗斯蒙特644温度变送器怎样接线?
  2. android广播intent原理,Android中BroadcastReceiver详解
  3. 测量接线导通问题解决方案
  4. 大家是否也习惯将常用到的Python软件包放在一个头文件里?
  5. 失败在大学生活中的三种功能
  6. 对于来自范兵提供光电检测带模块解析
  7. 两款带有WiFI的MicroPython模块:ESP32,ESP8266
  8. 当铅笔芯加上直流电压的时候
  9. 在MATPLOTLIB中加入汉字显示
  10. 智能车竞赛创意组别对应的FQA