use master--必须在master数据库中创建
go
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_lockinfo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_lockinfo]
GO
/*--处理BLOCK
查看当前进程,或BLOCK进程,并能自动杀掉死进程
因为是针对block的,所以如果有block进程,只能查看block进程
当然,你可以通过参数控制,不管有没有block,都只查看block进程
感谢: caiyunxia,jiangopen 两位提供的参考信息
--邹建 2004.4(引用请保留此信息)--*/
/*--调用示例
exec p_lockinfo
--*/
create proc p_lockinfo
@kill_lock_spid bit=1,--是否杀掉block的进程,1 杀掉, 0 仅显示
@show_spid_if_nolock bit=1--如果没有block的进程,是否显示正常进程信息,1 显示,0 不显示
as
set nocount on
declare @count int,@s nvarchar(1000),@i int
select id=identity(int,1,1),标志,
进程ID=spid,线程ID=kpid,块进程ID=blocked,数据库ID=dbid,
数据库名=db_name(dbid),用户ID=uid,用户名=loginame,累计CPU时间=cpu,
登陆时间=login_time,打开事务数=open_tran,进程状态=status,
工作站名=hostname,应用程序名=program_name,工作站进程ID=hostprocess,
域名=nt_domain,网卡地址=net_address
into #t from(
select 标志='BLOCK的进程',
spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,
status,hostname,program_name,hostprocess,nt_domain,net_address,
s1=a.spid,s2=0
from master..sysprocesses a join (
select blocked from master..sysprocesses group by blocked
)b on a.spid=b.blocked where a.blocked=0
union all
select '|_牺牲品(被BLOCK)_>',
spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,
status,hostname,program_name,hostprocess,nt_domain,net_address,
s1=blocked,s2=1
from master..sysprocesses a where blocked<>0
)a order by s1,s2
select @count=@@rowcount,@i=1
if @count=0 and @show_spid_if_nolock=1
begin
insert #t
select 标志='正常的进程',
spid,kpid,blocked,dbid,db_name(dbid),uid,loginame,cpu,login_time,
open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address
from master..sysprocesses
set @count=@@rowcount
end
if @count>0
begin
create table #t1(id int identity(1,1),a nvarchar(30),b Int,EventInfo nvarchar(255))
if @kill_lock_spid=1
begin
declare @spid varchar(10),@标志 varchar(10)
while @i<=@count
begin
select @spid=进程ID,@标志=标志 from #t where id=@i
insert #t1 exec('dbcc inputbuffer('+@spid+')')
if @@rowcount=0 insert #t1(a) values(null)
if @标志='BLOCK的进程' exec('kill '+@spid)
set @i=@i+1
end
end
else
while @i<=@count
begin
select @s='dbcc inputbuffer('+cast(进程ID as varchar)+')' from #t where id=@i
insert #t1 exec(@s)
if @@rowcount=0 insert #t1(a) values(null)
set @i=@i+1
end
select a.*,进程的SQL语句=b.EventInfo
from #t a join #t1 b on a.id=b.id
order by 进程ID
end
set nocount off
go
分享到:
相关推荐
block-kit-handler允许您以更少的代码和更轻松的方式以编程方式处理Block Kit。安装npm install block-kit-handler用法我有一个Github项目,展示了如何使用block-kit-handler。 有关详细信息,请参阅。信息import {...
FusionStorage Block故障处理概述.pptx
FusionStorage Block运维故障处理指南.pptx
FusionStorage Block运维故障处理指南.pdf
通过Block实现TableViewCell上button的点击事件.
FusionStorage Block故障处理概述.pdf
EasyBlock 一个简易的block处理组件
包含有内部类,则jad处理构造函数的参数时会出错; 2.不支持zip和jar包。(注:如果使用Eclipse插件,则很容易得到包中的某个类的反编译代码) 3.当有标签块,嵌套循环中有break/continue,有goto语句的时候,会...
block是在IOS5.0添加的新内容,在GCD编程中,有很多地方都是block的身影,希望大家一起学习,在IOS7强大的多任务处理中,一定能大展身手的
方法来触发按钮的动作,而改成用一个block的方式来出发动作,这样处理后,一可以降低代码的分散度,二当我再次查看按钮的触发方法实现细节时就不用点command跳到方法里,而是在按钮的初始化位置就能看到按钮的点击...
UIButton的一个Category,使用block处理UIControlEvent事件,如常用的TouchUpInside等 使用方法 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from ...
关于gnuradio中各个信号处理模块的简单介绍,我自己整理的。
一行代码,只需设置url,必要参数,成功的处理Block和失败的处理Block,即可操作并缓存http github地址:https://github.com/DDstrongman/HttpManager 详细使用方法请参考.h文件,好用请给star,不好用欢迎提建议~
用Python语言对图像进行m*n的均匀分块
在iOS通过代理逆向传值的方式详解一文中,分析了如何利用代理模式来逆向传值,其实还有一些其他的方式,如通知、Block等,相比较代理,我个人认为反而要简单些,但是需要处理好细节问题,如Block循环引用。...
#资源达人分享计划#
此文件包是matlab应用于图像处理的例子,没有压缩密码!并且与偏微分方程有密切关系!
EasyPermission 封装了开发中常用的权限请求的代码,使用Block进行回调处理
IOS二维码扫描可自定义页面(快速集成、支持Block回调处理),只需要把LBXScan文件夹拖入工程内即可,具体使用方式看Demo代码。
ios弹窗视图,使用block处理点击事件 很简单的弹窗视图控件,可以设置箭头方向在视图的上下左右,可以自定义视图背景颜色,判断视图超出屏幕自动改变位置 使用很简单,默认白色背景箭头在上面 - (IBAction)leftTop:...