데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
동적쿼리를 생성해서 아래 쿼리문을 실행하려고 하는데요.
보시다시피 단순 select 쿼리가 아닌데 가능할까요?
제가 sql 을 깊이 있게 알지 못해서요...아시는 분들은 상세하게 설명해주시면 감사하겠습니다. ^^;;;
참고로 동적쿼리를 만들고 이것을 프로시저로 만들어서 실행을 하려고 하는 것입니다.
DECLARE @sp_id AS INT
set @sp_id = 0
select @sp_id = req_spid
from master.dbo.syslockinfo,
master.dbo.spt_values v,
master.dbo.spt_values x,
master.dbo.spt_values u
where master.dbo.syslockinfo.rsc_type = v.number
and v.type = 'LR'
and master.dbo.syslockinfo.req_status = x.number
and x.type = 'LS'
and master.dbo.syslockinfo.req_mode + 1 = u.number
and u.type = 'L'
and u.name = 'X'
group by req_spid
having COUNT(*) > 1000
begin
if @sp_id <> 0
begin
kill @sp_id
end
end
END
SET NOCOUNT OFF
set @sp_id = ''
select @sp_id = @sp_id + 'kill '+convert(varchar,req_spid) + ';'
from master.dbo.syslockinfo,
master.dbo.spt_values v,
master.dbo.spt_values x,
master.dbo.spt_values u
where master.dbo.syslockinfo.rsc_type = v.number
and v.type = 'LR'
and master.dbo.syslockinfo.req_status = x.number
and x.type = 'LS'
and master.dbo.syslockinfo.req_mode + 1 = u.number
and u.type = 'L'
and u.name = 'X'
group by req_spid
having COUNT(*) > 1000 ;
if len(@sp_id ) > 4
begin
exec (@sp_id)
end
else
begin
print '해당 프로세스가 없습니다.'
end