LIS服务器假死阻塞解决办法

服务器阻塞是个很头疼的问题,多少个日日夜夜,只因为服务器的呼唤,我一路狂奔就去医院杀“阻塞进程”去了。

搞完ISO15189,我想解决这个问题。

一、自动解锁。

使用Select @@LOCK_TIMEOUT命令可以看得到当前数据库加锁的超时期限,单位是毫秒。如果为“-1”,代表不会有超时,服务器将会一直处于加锁状态。

因此,我能想到的第一种方法就是”SET LOCK_TIMEOUT 30000″。既然服务器都给予了这样一个功能,那我不如直接用上。按照如上设定,如果加锁持续了30秒,则自动解锁!

想象很美好,但是现实很残酷,第二天,我还是跑过去杀进程去了!阻塞的进程压根就会一直存在!

二、自动结束阻塞进程

以下为结束阻塞进程的SQL存储过程:
--结束SQL阻塞的进程%%%%%%%%%%%%%%%%%%%%%%

 代码如下 复制代码

create procedure sp_Kill_lockProcess

as

begin

SET NOCOUNT ON

declare @spid int,@bl int,

@intTransactionCountOnEntry int,

@intRowcount int,

@intCountProperties int,

@intCounter int,

@sSql nvarchar (200)

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

while @intCounter

begin

-- 取第一 www.111cn.net 条记录

select @spid = spid,@bl = bl

from #tmp_lock_who where Id = @intCounter

begin

if @spid =0

begin

set @sSql='kill ' + CAST(@bl AS VARCHAR(10))

exec sp_executesql @sSql

end

end

-- 循环指针下移

set @intCounter = @intCounter + 1

end

drop table #tmp_lock_who

SET NOCOUNT OFF

return 0

end

go

将上述语句执行后,在master数据库下,即可以找到存储过程sp_Kill_lockProcess。

在SQL SERVER代理中添加作业KillBlocking,将执行时间设置为每10分钟一次,搞定!

测试一下,每天可以杀死三个阻塞进程,我们的LIS数据库啊,真烂。

如果你想进一步追踪阻塞的原因的话,把输出写入到日志中去就行了!

时间: 2024-10-07 09:27:20

LIS服务器假死阻塞解决办法的相关文章

IE浏览器假死的解决办法

最近笔者电脑经常会遇到IE浏览器假死的现象,有的时候打开几个网页中途就假死了,怎么操作都没反应.另外点击QQ面板中的进入QQ空间或者微博多数时候也没有任何反应出现了典型的IE假死现象.对于IE假死现象其实笔者并不多见,此类问题往往比较蹊跷,系统各方面也未发现有问题,那么IE假死该怎么办呢?以下编辑介绍一下个人的解决办法. IE假死的解决办法 1)首先排除病毒因素 如果电脑经常会出现IE假死的情况,首先我们进行的是对电脑进行全盘扫描,排除病毒破坏干扰. 2)升级IE浏览器 排除病毒干扰后,我们再来

打开浏览器就假死的解决办法

我们打开开始菜单,输入regedit 打开注册表编辑器. 接着按照下面的路径进行寻址 HKEY_CURRENT_USERSOFTWAREMICROSOFTWINDO WSCurrentversionExplorerFileExts.lnk 我们可以看在.lnk下,只留下openwithlist和openwithprogids两个项,其它全部删掉. 同时,将openwithlist和openwithprogids中的默认数值,全部删除,然后退出注册表编辑器,就可以解决浏览器假死的问题! 完.

Win 7操作系统假死的解决办法

Windows 7虽好,可是小问题不断.从Beta版本至今,很多朋友遇到最严重的问题就是资源管理器偶尔或者经常失去响应,虽然不是什么非重装的问题,但是时不时电脑卡上一段时间,谁都觉得很烦.那么到底Windows 7在哪些情况下会出现这样的问题,又应该如何来解决,这是今天来探讨的问题. 情景一:开机假死 开机就假死一般情况是在进入桌面之后,鼠标就变成圆圈状,一直在忙碌状态,会持续很长一段时间,要结束的话只有强制关机. 出现这一类问题的原因比较多,可以从几个方面来看.首先,最好不要安装各种所谓的Wi

Win7打开文件夹时假死的解决办法

  思路一:关闭Windows Defender 如果你没有安装第三方防护软件,系统会默认开启自带的Windows Defender的,默认情况下,扫描文件时会占用大量的系统资源并会造成打开文件夹时假死;如果安装有其他防护软件,Windows Defender应该会自己关闭,如果没有关闭在服务中关闭"Windows Defender Service"服务即可. 如果你只想使用Windows Defender作为基础防护的话,就需要设定特例了: 打开Windows Defender,点击

mac: vmware fusion中cent os启动假死的解决办法

环境: mac os X 10.9.2 + vmware 6.0.2 + cent OS 6.5 minimal 现象: Booting CentOS (2.6.32-358.e.l6.i686) in 0 seconds... 启动到这里就卡住了 解决办法: 参考这里 https://www.centos.org/forums/viewtopic.php?t=4769 启用时,先按任意键,进到选择菜单 , 按e键 -> 上下选择到 kernel这行 -> 再按e进入编辑模式 -> 等屏

拨号上网电脑假死的解决方法

相信大家很多人都碰到过这样的情况,用拨号上网电脑假死, 就是刚装了宽带的时候出现电脑一开机出现拨号连接的时候电脑就死机一样, 其实电脑没有死机, 我们叫他假死,要过上几分钟才会好.下面就给大家介绍下这种拨号上网电脑假死的解决方法. 造成这种拨号上网电脑假死的原因是, Windows XP在默认安装方式下,对网卡的TCP/IP设置础"自动获取"状态.当系统启动后,系统首先检测网卡配置中是否有固定的IP地址,如果没有找到固定IP 地址,则会向外发送数据包请求网络中的DHCP服务器分配IP地

拨号上网时电脑假死的解决方法

用拨号上网时,有时候遇到电脑假死, 就是刚装了宽带的时候,电脑一开机出现拨号连接的时候电脑就死机, 其实电脑没有死机, 就是假死,要过上几分钟电脑自动好.没什么大问题,只是对于电脑初学者来说难免有一些惊慌.下面就给大家介绍拨号上网时电脑假死的解决方法. 造成这种拨号上网电脑假死的原因是, Windows XP在默认安装方式下,对网卡的TCP/IP设置础"自动获取"状态.当系统启动后,系统首先检测网卡配置中是否有固定的IP地址,如果没有找到固定IP地址,则会向外发送数据包请求网络中的DH

C# WinForm程序处理后台繁忙导致前台控件假死现象解决方法

  这篇文章主要介绍了C# WinForm程序处理后台繁忙导致前台控件假死现象解决方法,本文通过Application.DoEvents()解决这个问题,并讲解了Application.DoEvents()的作用,需要的朋友可以参考下 特别是针对循环或timer处理中需要在窗体控件显示数据时,因后台处理过度繁忙而出现没刷新或者假死现象时,可以使用 代码如下: Application.DoEvents(); Application.DoEvents()的作用 代码如下: private void

DNS服务器错误码4010解决办法

  DNS服务器错误码4010解决办法: 在域级别上,就是在domain.com这个区域新建你服务器出错的 a记录. c62fc7a6-ad5e-4150-a277-017523a082ca._msdcs.ist.local是我们大陆服务器; 新建它为a记录并指向该服务器ip地址,数十分钟后此记录消失,问题就解决了. 强制的把记录复制到了dns 的_msdcs区域内.