MSSql高级--阻塞和死锁

 在数据库高并发和高耗资源的情况下易出现死锁,这里我们提供死锁解决方案,后续我们会写高并发和高耗资源相关解决方案文章,敬请期待。快速开发平台

--当很多连接到你的数据库时,报这种错误“已超过了锁请求超时时段”
--直接把下在面的存储过程 放到你的Master数据库执行一下就可以了
USE DBName
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
go

create PROC [dbo].[Sp_KillAllProcessInDB] @DbName VARCHAR(100)
AS
IF DB_ID(@DbName) = NULL
BEGIN
PRINT 'DataBase dose not Exist'
END
ELSE
BEGIN
DECLARE @killspId VARCHAR(30)
DECLARE TmpCursor CURSOR
FOR
SELECT 'Kill ' + CONVERT(VARCHAR, spid) AS spId
FROM master..SysProcesses
WHERE DB_NAME(dbid) = @DbName
AND spid <> @@spid --终止不是当前进程的进程(不等于当前进程)
AND dbid <> 0 --数据库ID不是0
OPEN TmpCursor
FETCH NEXT FROM TmpCursor

INTO @killspId --select into @killspId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC (@killspId)
FETCH NEXT FROM TmpCursor
INTO @killspId

END

CLOSE TmpCursor
DEALLOCATE TmpCursor
END


--exec Sp_KillAllProcessInDB 'DBName'
--查询死锁
select * from master..SysProcesses where db_Name(dbID) = 'DBName'
and spId <> @@SpId
and dbID <> 0
and blocked >0;          

本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:华晨软件-云微开发平台 » MSSql高级--阻塞和死锁
本文标题:MSSql高级--阻塞和死锁

原文地址:https://www.cnblogs.com/frfwef/p/14574999.html