处理BLOCK

原创 2004年04月13日 14:15:00

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 处理cell上button的点击事件

  • 2014年08月29日 21:45
  • 38KB
  • 下载

UIButton基础以及使用block+UIButton处理点击事件

// UIButton * btn = [[UIButton alloc] init];//custom类型,一般不使用 //UIButtonTypeSystem 只能得到图片的轮廓,不能...

MapReduce中如何处理跨行的Block和InputSplit

1 提出问题 Map最小输入数据单元是InputSplit。比如对于那么对于一个记录行形式的文本大于128M时,HDFS将会分成多块存储(block),同时分片并非到每行行尾。这样就会产生两个问题: ...

block 对外部引用变量的处理

引用地址:博客园http://www.cnblogs.com/tangbinblog/p/4146728.html                               MRC 环境 ...

Hadoop MapReduce中如何处理跨行Block和UnputSplit

Hadoop的初学者经常会疑惑这样两个问题:1.Hadoop的一个Block默认是64M,那么对于一个记录行形式的文本,会不会造成一行记录被分到两个Block当中?2.在把文件从Block中读取出来进...

精通iOS开发--第15章 Grand Central Dispatch和后台处理之Block与Self的循环引用

Block与Self的循环引用 01:众所周知若self中引用了Block块,而此Block块中又引用了Self则会造成循环引用,需要提醒的是即使在你的block代码中没有显式地出现"self"...

ORA-600 [2662] Block SCN is ahead of Current SCN 处理方法 说明

一. ORA-600[2662] 说明 关于ORA-600[2662]的的错误,之前的blog 有说明:        ORA-600[2662] "Block SCN is ahea...

NameNode处理上报block块逻辑分析

前言在hadoop集群中,一个datanode执行启动操作后,会在namenode中进行节点的注册,然后namenode会与这个新注册的datanode通过心跳的形式,进行信息的传输,一方面datan...

【道森试听】坏块处理(data block)——Roger大师

数据库坏块是指由于硬件错误等问题导致数据库在写入数据块时出现异常(nologing也可能导致). 通常,我们将坏块分为2类,物理坏块和逻辑坏块。 产生原因:硬件io问题,操作系统问题内存错误,磁盘...

Hadoop处理跨block行源码分析记录

Hadoop的block大小默认为64M,将一个大文件按64M切分block,分发到各个datanode存储,那么必然会造成一行数据分布到不同block,不同的datanode,那Hadoop是如何处...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:处理BLOCK
举报原因:
原因补充:

(最多只允许输入30个字)