查看数据库死锁的进程及清除sleeping进程(Kill__Sleeping_Processes)
来源:互联网 发布:php pdo sqlserver 编辑:程序博客网 时间:2024/05/22 18:10
例28.49 查看数据库死锁的进程(proc_who_lock)
用proc_ find _lock过程查看数据库死锁的进程。
if exists (SELECT *
FROM dbo.sysobjects
WHERE id = object_id(N'[dbo].[proc_find_lock]')
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[proc_find_lock]
GO
create procedure proc_find_lock
as
begin
declare @spid int,@bl int,
@intTransactionCountOnEntry int,
@intRowcount int,
@intCountProperties int,
@intCounter int
create table #temp_lock (
id int identity(1,1),
spid smallint,
bl smallint)
IF @@ERROR<>0 RETURN @@ERROR
INSERT INTO #temp_lock(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 #temp_lock
IF @@ERROR<>0 RETURN @@ERROR
if @intCountProperties=0
SELECT '没有阻塞和死锁信息' as 提示
while @intCounter <= @intCountProperties
BEGIN
SELECT @spid = spid,@bl = bl
FROM #temp_lock 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 #temp_lock
return 0
end
运行过程proc_find_lock,结果如图28-48所示。
proc_find_lock
例28.46 清除sleeping进程(Kill__Sleeping_Processes)
Sleeping进程是系统中处于睡眠状态尚未活动的进程,这部分进程可以杀掉。
CREATE PROCEDURE dbo.Kill__Sleeping_Processes @dbname varchar(50)
AS
BEGIN
SET NOCOUNT ON
DECLARE @spid INT,
@cnt INT,
@sql VARCHAR(255)
SELECT @spid = MIN(spid),@cnt = COUNT(*)
FROM master..sysprocesses
WHERE dbid = DB_ID(@dbname) AND spid != @@SPID AND status = 'sleeping'
WHILE @spid IS NOT NULL
BEGIN
SET @sql = 'KILL ' + RTRIM(@spid)
EXEC ( @sql )
SELECT @spid = MIN(spid),@cnt = COUNT(*)
FROM master..sysprocesses
WHERE dbid = DB_ID(@dbname) AND spid != @@SPID AND status = 'sleeping'
END
END
GO
运行改存储过程后杀掉sleeping进程:
Kill__Sleeping_Processes SQLS2008
清除前后可以用EXEC sp_who 'active '进行查看。
- 查看数据库死锁的进程及清除sleeping进程(Kill__Sleeping_Processes)
- 查看数据库中死锁的进程
- 查看数据库死锁,并查看死锁SQL,杀死死锁进程
- 查看进程死锁的命令
- SqlServer 查看死锁的进程
- Linux ps查看进程状态及进程死锁问题的查看
- Sybase12.5数据库进程OmniServer的产生及清除
- sql server 查看表的死锁和Kill 死锁进程
- sql server 查看表的死锁和Kill 死锁进程
- sql server 查看表的死锁和Kill 死锁进程
- sql server 查看表的死锁和Kill 死锁进程
- sql server 查看表的死锁和Kill 死锁进程
- sql server 查看表的死锁和Kill 死锁进程
- sql server 查看表的死锁和Kill 死锁进程
- 用存储过程查出引起死锁的进程和SQL语句--数据库死锁原因及解决办法
- Kill 数据库死锁进程
- 进程死锁及解决办法
- 进程死锁及解决办法
- [ARM Linux] Qt: Qtopia 2.2 桌面和程序 在ARM-LINUX上发布
- 数据结构课程设计 算术表达式求值
- JQuery页面随滚动条动态加载效果实现
- POJ1275 Cashier Employment
- 数据结构课程设计 表达式类型的实现
- 查看数据库死锁的进程及清除sleeping进程(Kill__Sleeping_Processes)
- php中array_multisort()对多维数组进行排序,相当于数据库查询是order by多字段排序。。超好用
- QWidget,QMainWindow和QDialog的区别
- gdb里面的堆栈调试命令
- 获取RichEditCtrl图片及如何使用在你的程序中~
- 自定义JavaScript类
- Sql Server内存瓶颈(读书笔记)
- js处理年月日下拉菜单变化
- Java学习笔记四