IF OBJECT_ID('spTraceMySessionStart') IS NOT NULL
DROP PROC spTraceMySessionStart
GO
CREATE PROCEDURE [dbo].[spTraceMySessionStart] @spid INT
AS

-- Create a Queue
DECLARE @rc 
INT
DECLARE 
@TraceID 
INT
DECLARE 
@maxfilesize 
bigint
SET @maxfilesize 

DECLARE @filename NVARCHAR(245
)
SET @filename 
'C:\TraceMySession_' 
    
CONVERT(NVARCHAR(10),@spid

    + 
'_d' 
    
REPLACE(CONVERT(VARCHARGETDATE(),111),'/',''

    + 
REPLACE(CONVERT(VARCHARGETDATE(),108),':',''
)

EXEC @rc sp_trace_create @TraceID output2@filename@maxfilesize
, NULL 
IF (@rc != 0GOTO 
error

-- Set the events
DECLARE @on 
bit
SET @on 
1
EXEC sp_trace_setevent @TraceID121
@on
EXEC sp_trace_setevent @TraceID1212
@on
EXEC sp_trace_setevent @TraceID1214
@on

-- Set the Filters
DECLARE @intfilter 
INT
DECLARE 
@bigintfilter 
bigint
EXEC sp_trace_setfilter @TraceID1210
@spid

-- 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

IF OBJECT_ID('spTraceMySessionStop') IS NOT NULL
DROP PROC spTraceMySessionStop
GO

CREATE PROCEDURE [dbo].[spTraceMySessionStop] @traceId INT
AS
EXEC 
sp_trace_setstatus @traceId,
0
EXEC sp_trace_setstatus @traceId,2

GO

/* 예제 */
EXEC master.dbo.spTraceMySessionStart 52

USE 
AdventureWorks
GO

SELECT 
name
FROM sys.sysobjects WHERE xtype 
'U'
GO
SELECT TOP 
10 Title
FROM 
HumanResources.Employee
GO

EXEC master.dbo.spTraceMySessionStop 2


[원문]
http://www.mssqltips.com/tip.asp?tip=1710
이 게시물을..