SQLServer

쿼리로 프로파일러 운영

손병환 2006. 1. 11. 15:18

아래의 쿼리문은 Read80Trace라는 프로그램을 사용하기 위한

추적 이벤트 설정 부분입니다.

제가 자주 사용하는 부분만 설정을 해 두었습니다.

 

이벤트를 마구 추가한다고 해서 Read80Trace에서 인식하는 것은 아닙니다.

Read80Trace의 도움말 파일을 확인해 보시면 알겠지만

적절한 구성요소가 있어요. 그 구성요소를 정확하게 매치시켜야만

Read80Trace에서 쿼리의 분석이 가능합니다.

 

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

 

/****************************************************/
/* Created by: SQL Profiler                         */
/****************************************************/


-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5

 

-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share

 

sp_trace_create [ @traceid = ] trace_id OUTPUT
     [,[@options =] option_value
    , [ @tracefile = ] 'trace_file'
    [ , [ @maxfilesize = ] max_file_size ]
     [ , [ @stoptime = ] 'stop_time' ]

여기서 옵션의 값으로 파일이 최대 용량이 되었을 때 자동으로 증가 시킬 수 있다.

옵션 값은 2번

 

exec @rc = sp_trace_create @TraceID output, 2, N'[저장 경로]', @maxfilesize, NULL

print @rc


if (@rc != 0) goto error

-- Client side File and Table cannot be scripted

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 10, 1, @on
exec sp_trace_setevent @TraceID, 10, 3, @on
exec sp_trace_setevent @TraceID, 10, 13, @on
exec sp_trace_setevent @TraceID, 10, 14, @on
exec sp_trace_setevent @TraceID, 10, 15, @on
exec sp_trace_setevent @TraceID, 10, 16, @on
exec sp_trace_setevent @TraceID, 10, 17, @on
exec sp_trace_setevent @TraceID, 10, 18, @on
exec sp_trace_setevent @TraceID, 12, 1, @on
exec sp_trace_setevent @TraceID, 12, 3, @on
exec sp_trace_setevent @TraceID, 12, 13, @on
exec sp_trace_setevent @TraceID, 12, 14, @on
exec sp_trace_setevent @TraceID, 12, 15, @on
exec sp_trace_setevent @TraceID, 12, 16, @on
exec sp_trace_setevent @TraceID, 12, 17, @on
exec sp_trace_setevent @TraceID, 12, 18, @on
exec sp_trace_setevent @TraceID, 45, 1, @on
exec sp_trace_setevent @TraceID, 45, 3, @on
exec sp_trace_setevent @TraceID, 45, 13, @on
exec sp_trace_setevent @TraceID, 45, 14, @on
exec sp_trace_setevent @TraceID, 45, 15, @on
exec sp_trace_setevent @TraceID, 45, 16, @on
exec sp_trace_setevent @TraceID, 45, 17, @on
exec sp_trace_setevent @TraceID, 45, 18, @on
exec sp_trace_setevent @TraceID, 45, 22, @on
exec sp_trace_setevent @TraceID, 45, 25, @on
exec sp_trace_setevent @TraceID, 45, 29, @on

-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint

 

-- 필요한 DB 파일만 감시하도록 설정할 때 사용합니다.

-- 이 때 DB Id로 설정해야 하는데요 DB Id를 모를 경우에는

-- sp_helpdb로 확인이 가능합니다.

--set @intfilter = 37
--exec sp_trace_setfilter @TraceID, 3, 1, 0, @intfilter

 

exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'


-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

-- display trace id for future references
select TraceID=@TraceID
goto finish

error:
select ErrorCode=@rc

finish:
go

 

-- 종료할 때에는 반드시 일시 정지를 하고 닫기를 해야 합니다. (중요)
-- sp_trace_setstatus [TraceID], [Property]   

-- Property -> 0 : 일시 정지, 1 : 다시 시작, 2 : 닫기

-- exec sp_trace_setstatus 1, 0   
-- go
-- exec sp_trace_setstatus 1, 2
-- go

 

 

아래는 Read80Trace의 명령어 입니다.

일반적으로 아래와 같은 방법으로 사용하시면 됩니다.

 

Read80Trace -S[ServerIP] -d[OutputDataBaseName] -U[UserID] -P[Password] -o[rml output filepath] -I[tracefile] -r

 

 

요즘 머리가 나빠져서리... 이렇게 글을 남겨놓지 않으면 다시 겅부하는데 엄청 시간이 걸려서리...

쩝~~~