안녕하세요. 질문이 있어서 이렇게 글을 남깁니다.

 

특정시간대에 8시~10시 사이에 매일매일 걸리는 LOCK 이있는데

 

프로시저 상에는 오류가 없고

 

이력 남기는용도로 쓰고 잇는 프로시저로 스캐쥴돌아 확인하는데..

 

남기는용도 프로시저는 다음과 같습니다.

 

CREATE PROCEDURE  [dbo].[Z_BLOCK_CHECK]  
as

set nocount on

create table #tbl(
 SPID int,
 dbid varchar(255),
 objid varchar(255),
 indID varchar(255),
 Type varchar(255),
 Resource varchar(255),
 Mode varchar(255),
 Status varchar(255)
 
)

declare @objid varchar(255)
DECLARE @SPID VARCHAR(255)
declare @obj_sp_name varchar(max)
declare @block_table varchar(255)

select @objid = null
select @obj_sp_name = null;

insert into #tbl(SPID,dbid,objid,indID,Type,Resource,Mode,Status)
exec sp_lock

delete from #tbl where  Type<>'TAB' or objid < 0 or Mode not in ('X','IX')


insert into ZTB_LOCK(SPID, dbid, objid, insDate, cnt)
select SPID, dbid, objid, getdate(), 0 from #tbl

delete from ZTB_LOCK where SPID+dbid+objid not in (
 select SPID+dbid+objid from #tbl

) and  convert(char(8), insDate, 112) =  convert(char(8), getdate(), 112)

select top 1 @objid = objid,@SPID = SPID from ZTB_LOCK where convert(char(8), insDate, 112) =  convert(char(8), getdate(), 112)
group by SPID, dbid, objid having count(*) > 5


 IF isnull(@objid, '') <> ''
 begin
  if cast(replace(convert(varchar,getdate(),8),':','') as int) between 080000 and 220000
  begin
   
     select @block_table = name from sysobjects  where  id = @objid
     set @obj_sp_name = (select qt.text from master.dbo.sysprocesses sprc CROSS APPLY sys.dm_exec_sql_text(sprc.sql_handle) as qt where sprc.spid = convert (smallint, @SPID))
     
      insert into TBL_BLOCK_SMS(BLOCK_SQL, CREATE_DTTM,SP_NAME) values (@block_table, GETDATE(),@obj_sp_name)
   
  end


drop table #tbl;
 
end
-- Z_SP_TABLE_LOCK 원래 블럭체크

 

이거인데

 

sysrscols, syscolpars

 

이 시스템 테이블이 락이 걸립니다..

 

아래 DB CHECK 도 넣었습니다.

 

무엇이 문제일까요?ㅠㅠㅠ 그리고 이 테이블이 무슨 역활을 하나요? 이력관리인가요?