본문 바로가기

MSSQL/Performance

Transact-SQL 로 만들어 본 추적(Trace) 관리 저장 프로시저 - (2)


Transact-SQL 로 만들어 본 추적(Trace) 관리 저장 프로시저 - (2)

작성자 : 이승연

이 전글에서 추적(Trace)을 시작하는 Stored Procedure을 만들어 보았습니다. 다시 한번 말하지만, 해당 Stored Procedure는 "SQL Server 2005 초보 DBA를 위한 SQL Server 2005 관리 가이드" 라는 책에 수록되어 있는 Stored Procedure라는 점을 말씀드리면서 이 번글에서는 시작한 추적(Trace)을 중지 시키는 Stored Procedure을 설명 해보도록 하겠습니다.

저번글에서 설명은 하지 않았지만, 추적(Trace)을 시작한 후에 해당 추적 정보를 Temp Database의 TraceQueueList라는 Table을 만들어서 저장을 시켰다. 그 이유는 해당 추적(Trace)을 지우기 위해서 이다.

먼저, 추적(Trace)을 중지시키는 Stored Procedure을 보자.

-- =============================================

-- Author : 이승연

-- Create date : 2009-06-16

-- Description :

-- =============================================

CREATE PROCEDURE [dbo].[usp_trace_stop]

                                   @TraceName sysname = 'trace'                 

AS

BEGIN

                  SET NOCOUNT ON;

                 

                  -- 변수선언

                  DECLARE @TraceID int

                  DECLARE @TraceFileName sysname

                 

                  -- 추적목록을확인하여, 추적을중지한다.

                  IF object_id('tempdb..TraceQueueList') IS NOT NULL BEGIN

                                   SELECT @TraceID = TraceID, @TraceFileName = TraceFile FROM tempdb..TraceQueueList

                                   WHERE TraceName = @TraceName

                                                     IF @@rowcount <> 0 BEGIN

                                                                       EXEC sp_trace_setstatus @TraceID, 0

                                                                       EXEC sp_trace_setstatus @TraceID, 2

 

                                                                       DELETE tempdb..TraceQueueList WHERE TraceName = @TraceName

 

                                                                       PRINT 'Trace is stopped.' + ' The trace output file name is ' + @TraceFileName

                                                     END

                  END ELSE BEGIN

                                   PRINT 'No active traces.'

                  END

END


이와 같이, 'tempdb..TraceQueueList'라는 Table에서 활성화되어 있는 TraceID가 있다면 sp_trace_setstatus 을 이용하여 중지을 시켜주면 된다. sp_trace_setstatus 는 이 전글에서 충분히 설명하였다.

Transact-SQL 로 만들어 본 추적(Trace) 관리 저장 프로시저 - (3)에서는 이 저장되어진 추적(Trace)을 가지고 어떻게 활용을 하는지 알아보도록 하겠다.