mssql 잠금 해제에 대한 자세한 정보 보기 (저장 프로세스)

1514 단어 MSSQL
CREATE  procedure [dbo].[sp_who_lock]

as

begin

declare @spid int,@bl int,

        @intTransactionCountOnEntry  int,

        @intRowcount    int,

        @intCountProperties   int,

        @intCounter    int

 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 master..sysprocesses where  blocked>0 ) a

   where not exists(select * from (select * from master..sysprocesses where  blocked>0 ) b

   where a.blocked=spid)

   union select spid,blocked from master..sysprocesses where  blocked>0



 IF @@ERROR<>0 RETURN @@ERROR

 

--          

 select  @intCountProperties = Count(*),@intCounter = 1

 from #tmp_lock_who

 

 IF @@ERROR<>0 RETURN @@ERROR

 

 if @intCountProperties=0

  select '           ' as message



--     

while @intCounter <= @intCountProperties

begin

--       

  select  @spid = spid,@bl = bl

  from #tmp_lock_who 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 #tmp_lock_who



return 0

end



exec dbo.[sp_who_lock]


좋은 웹페이지 즐겨찾기