Трессировка mssql
Просмотр списка трессировок
select * from fn_trace_getinfo(0)
Колонки
traceid int - Идентификатор трассировки.
property int - Свойство трассировки:
- 1 — параметры трассировки. Дополнительные сведения см. в разделе @options в sp_trace_create ( Transact-SQL ) .
- 2 — имя файла
- 3 — максимальный размер
- 4 — время остановки
- 5 — текущее состояние трассировки. 0 — остановлена. 1 — запущена.
- value sql_variant - Сведения о свойстве указанной трассировки
sys.fn_trace_getinfo ( { trace_id | NULL | 0 | DEFAULT } )
https://docs.microsoft.com/ru-ru/sql/relational-databases/system-functions/sys-fn-trace-getinfo-transact-sql
Просмотр информации о логгируемых событиях
with e1 as (select * from fn_trace_geteventinfo(1))
select tk.name, te.name, tc.name, tc.type_name, tc.max_size from e1
left join sys.trace_events te on (te.trace_event_id = e1.eventid)
left join sys.trace_categories tk on (tk.category_id = te.category_id)
left join sys.trace_columns tc on (tc.trace_column_id = e1.columnid)
Просмотр событий
Вариант 1
select * from fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\log_10160.trc',default)
Вариант 2
DECLARE @path NVARCHAR(260)
SELECT @path=path FROM sys.traces WHERE is_default = 1
SELECT TE.name AS EventName, DT.DatabaseName, DT.ApplicationName,
DT.LoginName, COUNT(*) AS Quantity
FROM dbo.fn_trace_gettable (@path, DEFAULT) DT
INNER JOIN sys.trace_events TE
ON DT.EventClass = TE.trace_event_id
GROUP BY TE.name , DT.DatabaseName , DT.ApplicationName, DT.LoginName
ORDER BY TE.name, DT.DatabaseName , DT.ApplicationName, DT.LoginName;
Pattern 1
-- Считывание из log в таблицы
select *
into trace1
-- trace1...traceN
from master.sys.fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\
log_10160.trc',default)
-- Объединение таблиц
select * into trace_c from trace1
-- trace1...traceN
insert into trace_c select * from trace5
-- Удаление таблиц
drop table trace5
-- trace1...traceN
-- Просмотр
SELECT
TE.name AS EventName, DT.DatabaseName, DT.ApplicationName,
DT.LoginName, COUNT(*) AS Quantity
FROM
(select * from trace_c)
DT
INNER JOIN sys.trace_events TE ON DT.EventClass = TE.trace_event_id
GROUP BY TE.name , DT.DatabaseName , DT.ApplicationName, DT.LoginName
ORDER BY TE.name, DT.DatabaseName , DT.ApplicationName, DT.LoginName;