Перейти к содержимому

Как сделать трассировку на стороне MS Sql сервера

Проверить какие трассировки у нас запушены на ms sql.

SELECT * FROM   sys.traces;

Остановить запушенную трассировку.

10-04-2015 10-05-39[3]

DECLARE @TraceID INT ;

 SET @TraceID = 5 ; – взять ид из таблички проверки запушенных трассировок 

 EXEC sp_trace_setstatus

    @traceid = @TraceID

    ,@STATUS = 0 ;-- stop trace

 -- delete the trace

 EXEC sp_trace_setstatus

    @traceid = @TraceID

  ,@STATUS = 2 ;-- delete trace

Выбор в profile шаблон TSQL_Duration набор трассировки и фильтр по времени выполнения запросов.

10-04-2015 11-03-21[5]

Экспортировать трассировку в sql

10-04-2015 11-16-55[4]

Открыть трассировку в sql и скопировать код трассировки.

10-04-2015 11-20-03[4]

И вставить в мой скрипт. Который создан что бы записывать данные трассировки без profile на стороне сервера через sql агент будет чуть ниже.

================================================================================================

-- Author: Константин Москвичёв

-- Create date: 13/04/2015

-- Description:    0.2b

-- Описание: Запускает трасировку. 

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

declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @filename nvarchar(128)
declare @filecount int

--указываем максимальный размер файла
set @maxfilesize = 100

--указываем путь и имя файла, к имени файла дописывается текушия дата и время

set @filename = '\\192.168.0.38\Backup\Trace_sql_serverov\s0079\TracE'+
    CONVERT(CHAR(20), GETDATE(),112)  + 
    REPLACE(CONVERT(CHAR(20), GETDATE(),108),':','')

-- НАстройка параметров трасировки
exec    @rc = sp_trace_create
    @traceid = @TraceID output, 
    @options = 2, --опция 2 https://msdn.microsoft.com/ru-ru/library/ms190362.aspx
    @tracefile = @filename, --имя трасировки
    @maxfilesize = @maxfilesize, -- максимальный размер трасировки
    @stoptime = NULL, -- не ограниченое время выполнения
    @filecount =  50 -- не больше 50 файлов хранить
    
if (@rc != 0) goto error


-- Сюда можно добавить любые параметры трасировки из sql Profile. 
-- В данный момент здась применен шаблон Tsql_Duration с фильтром 
-- выполнение запроса длится больше или равно 20000 милисикунд (20 секунд)
-- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 10, 7, @on
exec sp_trace_setevent @TraceID, 10, 15, @on
exec sp_trace_setevent @TraceID, 10, 31, @on
exec sp_trace_setevent @TraceID, 10, 8, @on
exec sp_trace_setevent @TraceID, 10, 16, @on
exec sp_trace_setevent @TraceID, 10, 48, @on
exec sp_trace_setevent @TraceID, 10, 64, @on
exec sp_trace_setevent @TraceID, 10, 1, @on
exec sp_trace_setevent @TraceID, 10, 9, @on
exec sp_trace_setevent @TraceID, 10, 17, @on
exec sp_trace_setevent @TraceID, 10, 41, @on
exec sp_trace_setevent @TraceID, 10, 49, @on
exec sp_trace_setevent @TraceID, 10, 2, @on
exec sp_trace_setevent @TraceID, 10, 10, @on
exec sp_trace_setevent @TraceID, 10, 18, @on
exec sp_trace_setevent @TraceID, 10, 26, @on
exec sp_trace_setevent @TraceID, 10, 34, @on
exec sp_trace_setevent @TraceID, 10, 50, @on
exec sp_trace_setevent @TraceID, 10, 3, @on
exec sp_trace_setevent @TraceID, 10, 11, @on
exec sp_trace_setevent @TraceID, 10, 35, @on
exec sp_trace_setevent @TraceID, 10, 51, @on
exec sp_trace_setevent @TraceID, 10, 4, @on
exec sp_trace_setevent @TraceID, 10, 12, @on
exec sp_trace_setevent @TraceID, 10, 60, @on
exec sp_trace_setevent @TraceID, 10, 13, @on
exec sp_trace_setevent @TraceID, 10, 6, @on
exec sp_trace_setevent @TraceID, 10, 14, @on
exec sp_trace_setevent @TraceID, 12, 7, @on
exec sp_trace_setevent @TraceID, 12, 15, @on
exec sp_trace_setevent @TraceID, 12, 31, @on
exec sp_trace_setevent @TraceID, 12, 8, @on
exec sp_trace_setevent @TraceID, 12, 16, @on
exec sp_trace_setevent @TraceID, 12, 48, @on
exec sp_trace_setevent @TraceID, 12, 64, @on
exec sp_trace_setevent @TraceID, 12, 1, @on
exec sp_trace_setevent @TraceID, 12, 9, @on
exec sp_trace_setevent @TraceID, 12, 17, @on
exec sp_trace_setevent @TraceID, 12, 41, @on
exec sp_trace_setevent @TraceID, 12, 49, @on
exec sp_trace_setevent @TraceID, 12, 6, @on
exec sp_trace_setevent @TraceID, 12, 10, @on
exec sp_trace_setevent @TraceID, 12, 14, @on
exec sp_trace_setevent @TraceID, 12, 18, @on
exec sp_trace_setevent @TraceID, 12, 26, @on
exec sp_trace_setevent @TraceID, 12, 50, @on
exec sp_trace_setevent @TraceID, 12, 3, @on
exec sp_trace_setevent @TraceID, 12, 11, @on
exec sp_trace_setevent @TraceID, 12, 35, @on
exec sp_trace_setevent @TraceID, 12, 51, @on
exec sp_trace_setevent @TraceID, 12, 4, @on
exec sp_trace_setevent @TraceID, 12, 12, @on
exec sp_trace_setevent @TraceID, 12, 60, @on
exec sp_trace_setevent @TraceID, 12, 13, @on


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

set @bigintfilter = 20000000
exec sp_trace_setfilter @TraceID, 13, 0, 4, @bigintfilter

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

 

Similar Posts:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *