• Nice Thing

    This is similar procedure for starting trace

    that I'm using in daily processing.

    CREATE PROCEDURE sp_startTrace

    AS

    DECLARE @TraceIdOut INT

    DECLARE @FolderTracenvarchar(128)

    DECLARE @FileTraceLikenvarchar(128)

    DECLARE @FileTracenvarchar(128)

    SELECT @FolderTrace = 'C:\FolderTrace\'

    SET @FileTraceLike = @FolderTrace + 'Trace%'

    IF

    (select count(*) from ::fn_trace_getinfo(default)

    where CAST(value AS VARCHAR) like cast(@FileTraceLike AS VARCHAR))

    > 0

    BEGIN

    PRINT 'Already started'

    RETURN

    END

    --------------trace file name TraceYYMMDDHHMMSS

    SET @FileTrace = @FolderTrace + 'Trace' +

    (select convert(CHAR(6),Getdate(), 12)) +

    SUBSTRING((select convert(CHAR(8),Getdate(), 108)),1,2)+

    SUBSTRING((select convert(CHAR(8),Getdate(), 108)),4,2)+

    SUBSTRING((select convert(CHAR(8),Getdate(), 108)),7,2)

    DECLARE @onValue as bit

    SET @onValue = 1

    DECLARE @maxfilesizeValue bigint

    SET @maxfilesizeValue = 1

    exec Master..sp_trace_create @TraceIdOut OUT,

    @Options =2,

    @TraceFile = @FileTrace,

    @maxfilesize = @maxfilesizeValue

    DECLARE Events_Cursor CURSOR FOR

    SELECT 10 As EventID

    UNION SELECT 11

    UNION SELECT 12

    UNION SELECT 13

    UNION SELECT 16

    UNION SELECT 17

    UNION SELECT 21

    UNION SELECT 22

    UNION SELECT 25

    UNION SELECT 33

    UNION SELECT 37

    UNION SELECT 40

    UNION SELECT 41

    UNION SELECT 42

    UNION SELECT 43

    UNION SELECT 53

    UNION SELECT 55

    UNION SELECT 59

    UNION SELECT 61

    UNION SELECT 67

    UNION SELECT 69

    UNION SELECT 74

    UNION SELECT 78

    UNION SELECT 79

    UNION SELECT 80

    UNION SELECT 92

    UNION SELECT 93

    UNION SELECT 100

    OPEN Events_Cursor

    DECLARE @EventID INT

    FETCH NEXT FROM Events_Cursor INTO @EventID

    WHILE @@FETCH_STATUS = 0

    BEGIN

    DECLARE Columns_Cursor CURSOR FOR

    SELECT 1 AS ColID

    UNION SELECT 3

    UNION SELECT 6

    UNION SELECT 8

    UNION SELECT 10

    UNION SELECT 11

    UNION SELECT 12

    UNION SELECT 13

    UNION SELECT 14

    UNION SELECT 15

    UNION SELECT 18

    UNION SELECT 27

    UNION SELECT 40

    OPEN Columns_Cursor

    DECLARE @ColumnID INT

    FETCH NEXT FROM Columns_Cursor INTO @ColumnID

    WHILE @@FETCH_STATUS = 0

    BEGIN

    exec Master..sp_trace_setevent @TraceId = @TraceIdOut,

    @EventID = @EventID ,

    @columnid = @ColumnID ,

    @on =@onValue

    FETCH NEXT FROM Columns_Cursor INTO @ColumnID

    END

    CLOSE Columns_Cursor

    DEALLOCATE Columns_Cursor

    FETCH NEXT FROM Events_Cursor INTO @EventID

    END

    CLOSE Events_Cursor

    DEALLOCATE Events_Cursor

    ----------- Filter

    exec Master..sp_trace_setfilter @traceid = @TraceIdOut,

    @columnid = 3,

    @logical_operator = 0,

    @comparison_operator = 0,

    @value = 15

    exec Master..sp_trace_setfilter @traceid = @TraceIdOut,

    @columnid = 10,

    @logical_operator = 0,

    @comparison_operator = 7,

    @value = N'SQL Profiler'

    exec Master..sp_trace_setstatus@traceid = @TraceIdOut ,

    @status = 1

    print ' Started Trace ' + @FileTrace

    GO