博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用脚本--查看当前锁信息(转)
阅读量:5154 次
发布时间:2019-06-13

本文共 2492 字,大约阅读时间需要 8 分钟。

USE [master]GO/****** Object:  StoredProcedure [dbo].[p_lockinfo]    Script Date: 02/07/2014 11:54:29 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROC [dbo].[usp_lockinfo]@kill_lock_spid BIT=0,  --是否杀掉死锁的进程,1 杀掉, 0 仅显示@show_spid_if_nolock BIT=1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示ASBEGIN    DECLARE @count INT,@s NVARCHAR(1000),@i INT    SELECT id=IDENTITY(INT,1,1),标志,     进程ID=SPID,线程ID=kpid,块进程ID=blocked,数据库ID=dbid,     数据库名=DB_NAME(dbid),用户ID=uid,用户名=loginame,累计CPU时间=cpu,     登陆时间=login_time,打开事务数=open_tran, 进程状态=status,     工作站名=hostname,应用程序名=program_name,工作站进程ID=hostprocess,     域名=nt_domain,网卡地址=net_address    INTO #t FROM(     SELECT 标志='死锁的进程',      SPID,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,      status,hostname,program_name,hostprocess,nt_domain,net_address,      s1=a.spid,s2=0     FROM master..sysprocesses a JOIN (      SELECT blocked FROM master..sysprocesses GROUP BY blocked      )b ON a.spid=b.blocked WHERE a.blocked=0     UNION ALL     SELECT '|_牺牲品_>',      SPID,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,      status,hostname,program_name,hostprocess,nt_domain,net_address,      s1=blocked,s2=1     FROM master..sysprocesses a WHERE blocked<>0    )a ORDER BY s1,s2    SELECT @count=@@ROWCOUNT,@i=1    IF @count=0 AND @show_spid_if_nolock=1    BEGIN     INSERT #t     SELECT 标志='正常的进程',      SPID,kpid,blocked,dbid,DB_NAME(dbid),uid,loginame,cpu,login_time,      open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address     FROM master..sysprocesses     SET @count=@@ROWCOUNT    END    IF @count>0    BEGIN     CREATE TABLE #t1(id INT IDENTITY(1,1),a NVARCHAR(30),b INT,EventInfo NVARCHAR(MAX))     IF @kill_lock_spid=1     BEGIN      DECLARE @spid VARCHAR(10),@标志 VARCHAR(10)      WHILE @i<=@count      BEGIN       SELECT @spid=进程ID,@标志=标志 FROM #t WHERE id=@i       INSERT #t1 EXEC('dbcc inputbuffer('+@spid+')')       IF @标志='死锁的进程' EXEC('kill '+@spid)       SET @i=@i+1      END     END     ELSE      WHILE @i<=@count      BEGIN       SELECT @s='dbcc inputbuffer('+CAST(进程ID AS VARCHAR)+')' FROM #t WHERE id=@i       INSERT #t1 EXEC(@s)       SET @i=@i+1      END     SELECT a.*,进程的SQL语句=b.EventInfo     FROM #t a JOIN #t1 b ON a.id=b.id    ENDENDGO--=====================================================--UsageEXEC [master].[dbo].[usp_lockinfo]@kill_lock_spid=0,  --是否杀掉死锁的进程,1 杀掉, 0 仅显示@show_spid_if_nolock=1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示

 

转载于:https://www.cnblogs.com/tianboblog/p/5451236.html

你可能感兴趣的文章
94. Binary Tree Inorder Traversal
查看>>
Java进击C#——语法之多线程
查看>>
JavaScript操作HTML 元素
查看>>
JavaScript——Prototype详探
查看>>
树莓派 pip 手动安装 和使用阿里云源
查看>>
使得最右边的元素右边框为0
查看>>
证明洗牌问题
查看>>
初入前端框架bootstrap--Web前端
查看>>
javascript操作表单
查看>>
Linux常用脚本命令总结
查看>>
[Usaco2006 Nov] Fence Repair 切割木板
查看>>
【转】SQL SERVER 开窗函数简介
查看>>
”高精度整数删去若干位以使剩下的值最小“问题
查看>>
MySQL性能调优与架构设计——第11章 常用存储引擎优化
查看>>
redhat下升级gcc编译器
查看>>
Ajax的使用
查看>>
Javascript返回顶部和砸金蛋,跑马灯等游戏代码实现
查看>>
js变量
查看>>
大数据时代了解一些问题
查看>>
R语言因子
查看>>