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
分享到:
相关推荐
SQL server大并发时软件出现卡顿,需要查询是什么SQL执行时引起的卡顿,同时具有干掉死锁进程,非常实用
大家在日常工作中,会碰到SQL死锁而造成应用程序无法使用,常见的SQL死锁的处理办法。
在SQL Server数据库管理系统中,死锁是一个常见的性能问题,它发生在两个或多个事务相互等待对方释放资源,导致它们都无法继续执行。死锁不仅影响数据库的正常运行,还可能导致数据一致性问题。本文将详细介绍如何在...
"SQL Server死锁的解除方法" SQL Server死锁是指在多个事务之间的资源竞争时,出现的循环等待资源的现象。死锁会导致系统性能下降,甚至会导致系统崩溃。因此,解决SQL Server死锁是非常重要的。 SQL Server死锁的...
SQL死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉,它们都将无法继续执行。这种情况通常发生在以下场景:事务A持有资源X并请求资源Y,同时事务B持有资源Y并请求资源X,...
此代码运行后,会生成一个存储过程,后面直接调用此存储过程即可查看,运行非常方便,可以快速定位死锁进程,快速解决sql数据库死锁问题。希望可以给各位系统管理员带来方便。希望可以给各位系统管理员带来方便。...
### SQL死锁解析与删除失败解决方案 #### 一、理解SQL死锁 在数据库系统中,当两个或多个事务在等待对方释放资源时就会发生死锁。这种情况类似于现实生活中的两个或多个人互相等待对方做出动作而自己却不动的情况...
### 解决SQL死锁问题 #### 一、SQL死锁概念与原理 SQL死锁是数据库操作中一种常见的并发控制问题。当两个或多个事务在等待对方释放资源时,就会形成死锁。在Oracle数据库中,死锁可能导致部分或者全部数据库操作...
当死锁发生并被捕获后,可以通过查看“Deadlock Graph”事件的数据列来分析死锁情况。这些图形表示了事务间的资源争夺关系,帮助你识别哪个对象或资源是引发死锁的原因。 6. **解决死锁**: 分析死锁报告后,可能...
SQL 表死锁解决办法 SQL 表死锁是一种常见的数据库问题,导致表或者库不可访问,查询不到数据。解决这个问题需要找到死锁的进程,然后杀死这些进程,释放资源。本文将详细介绍 SQL 表死锁解决办法,包括如何找到...
SQL死锁记录
### SQL Server死锁总结 #### 一、死锁原理 死锁是计算机系统中常见的问题之一,特别是在数据库管理系统中,由于并发控制不当可能导致系统性能下降甚至完全停止响应。在SQL Server中,死锁指的是两个或多个事务...
SQL Server死锁是数据库系统中常见的问题,它发生在两个或多个事务之间,因为它们相互等待对方释放资源,导致事务无法继续执行。理解死锁的原因和解决策略对于优化数据库性能至关重要。 首先,我们要深入理解死锁的...
- **死锁图分析**:通过查看SQL Server生成的死锁图来了解死锁的具体原因,从而优化代码逻辑。 总之,理解并有效处理SQL Server中的死锁问题对于确保系统的稳定性和性能至关重要。通过上述方法可以有效地管理和避免...
SQL死锁监控工具是数据库管理中的重要组成部分,主要用于检测和解决数据库系统中可能出现的死锁问题。死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉它们都将无法继续...
### SQL Server死锁查询知识点详解 #### 一、SQL Server中的死锁概念 在SQL Server中,当两个或多个事务互相等待对方释放资源时就会发生死锁。这通常发生在两个或更多的事务请求锁定同一资源的不同部分(如行、页...
SQL SERVER 2008 R2 查看和杀死死锁进程。数据库进程死锁是一个很严重的问题,快速定位到死锁的进程尤为重要。
- 使用以下命令加载死锁文件并查看其内容: ```sql USE master; GO SELECT * FROM sys.fn_xmlparse('file:="C:\Path\To\Your\Deadlock_File.xdl"'); GO ``` ##### 2. 分析死锁图 死锁文件中的XML数据包含了...
在SQL Server数据库管理系统中,死锁是常见的并发问题,它发生在两个或多个事务相互等待对方释放资源,导致它们都无法继续执行。"SQLServer自动杀死死锁进程"这一话题旨在探讨如何配置SQL Server来自动检测并解决...