sqlserver查询是否有死锁
发布时间:2020-12-12 12:52:25 所属栏目:MsSql教程 来源:网络整理
导读:/************************************************************* Code formatted by SoftTree SQL Assistant ?v6.5.258* Time: 2014/11/12 5:46:41************************************************************/DECLARE @spid INTDECLARE @blk INTDECLAR
/************************************************************ * Code formatted by SoftTree SQL Assistant ?v6.5.258 * Time: 2014/11/12 5:46:41 ************************************************************/ DECLARE @spid INT DECLARE @blk INT DECLARE @count INT DECLARE @index INT DECLARE @lock TINYINT SET @lock = 0 CREATE TABLE #temp_who_lock ( id INT IDENTITY(1,1),spid INT,blk INT ) --if @@error<>0 return @@error INSERT INTO #temp_who_lock ( spid,blk ) SELECT 0,blocked FROM ( SELECT * FROM MASTER..sysprocesses WHERE blocked > 0 )a WHERE NOT EXISTS( SELECT * FROM MASTER..sysprocesses WHERE a.blocked = spid AND blocked > 0 ) UNION SELECT spid,blocked FROM MASTER..sysprocesses WHERE blocked > 0 --if @@error<>0 return @@error SELECT @count = COUNT(*),@index = 1 FROM #temp_who_lock --select @count,@index --if @@error<>0 return @@error IF @count = 0 BEGIN SELECT '没有阻塞和死锁信息' --return 0 END WHILE @index <= @count BEGIN IF EXISTS( SELECT 1 FROM #temp_who_lock a WHERE id > @index AND EXISTS( SELECT 1 FROM #temp_who_lock WHERE id <= @index AND a.blk = spid ) ) BEGIN SET @lock = 1 SELECT @spid = spid,@blk = blk FROM #temp_who_lock WHERE id = @index SELECT '引起数据库死锁的是: ' + CAST(@spid AS VARCHAR(10)) + '进程号,其执行的SQL语法如下' ; SELECT @spid,@blk DBCC INPUTBUFFER(@spid) DBCC INPUTBUFFER(@blk) END SET @index = @index + 1 END IF @lock = 0 BEGIN SET @index = 1 WHILE @index <= @count BEGIN SELECT @spid = spid,@blk = blk FROM #temp_who_lock WHERE id = @index IF @spid = 0 SELECT '引起阻塞的是:' + CAST(@blk AS VARCHAR(10)) + '进程号,其执行的SQL语法如下' ELSE SELECT '进程号SPID:' + CAST(@spid AS VARCHAR(10)) + '被' + '进程号SPID:' + CAST(@blk AS VARCHAR(10)) + '阻塞,其当前进程执行的SQL语法如下' PRINT (LTRIM(@spid) + '' + LTRIM(@blk)); IF (@spid <> 0) BEGIN DBCC INPUTBUFFER(@spid) -- END DBCC INPUTBUFFER(@blk) --引起阻塞语句 SET @index = @index + 1 END END DROP TABLE #temp_who_lock --return 0 --KILL 64 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 从分层表数据(T-SQL)生成结构化(xml)文档
- 格式导致的Excel导入sql出现异常的解决方法
- SqlServer 排名函数(row_number、rank、dense_r
- 如何操作sqlserver 数据库的image字段[C#]
- sqlserver oracle 数据复制问题小结
- 删除具有4200万行的表的相关子查询的SQL?
- SQLServer中char、varchar、nchar、nvarchar的区
- sql-server – SQL Server 2008 R2中的死锁问题(
- Drop Failed for User - Error MSSQLSERVER 1542
- Sqlserver 如何修改替换text,ntext类型字段
热点阅读