Как отслеживать активность системы с помощью расширенных событий
Эта процедура показывает, как использовать расширенные события совместно со средством отслеживания событий для Windows (ETW) в целях мониторинга активности системы. Процедура показывает также варианты использования инструкций CREATE EVENT SESSION, ALTER EVENT SESSION и DROP EVENT SESSION.
Решение этих задач предполагает использование редактора запросов в среде SQL Server Management Studio для выполнения следующей процедуры. Процедура требует также использования командной строки для выполнения команд ETW.
Мониторинг активности системы с помощью расширенных событий
В редакторе запросов выполните следующие инструкции, чтобы создать сеанс событий и добавить два события. Эти события (checkpoint_begin и checkpoint_end) запускаются в начале и в конце контрольной точки базы данных.
CREATE EVENT SESSION test0 ON SERVER ADD EVENT sqlserver.checkpoint_begin, ADD EVENT sqlserver.checkpoint_end WITH (MAX_DISPATCH_LATENCY = 1 SECONDS) go
Добавьте цель сегментирования с 32 сегментами для подсчета числа контрольных точек по идентификатору базы данных.
ALTER EVENT SESSION test0 ON SERVER ADD TARGET package0.asynchronous_bucketizer ( SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id' ) go
Выполните следующие инструкции, чтобы добавить цель ETW. Это позволит видеть события начала и конца и использовать это для определения продолжительности обработки контрольной точки.
ALTER EVENT SESSION test0 ON SERVER ADD TARGET package0.etw_classic_sync_target go
Введите следующие инструкции, чтобы запустить сеанс и начать сбор событий.
ALTER EVENT SESSION test0 ON SERVER STATE = start go
Введите следующие инструкции для запуска трех событий.
USE tempdb checkpoint go USE master checkpoint checkpoint go
Введите следующие инструкции для просмотра счетчиков событий.
SELECT CAST(xest.target_data AS xml) Bucketizer_Target_Data_in_XML FROM sys.dm_xe_session_targets xest JOIN sys.dm_xe_sessions xes ON xes.address = xest.event_session_address JOIN sys.server_event_sessions ses ON xes.name = ses.name WHERE xest.target_name = 'asynchronous_bucketizer' AND xes.name = 'test0' go
В командной строке введите следующие команды для просмотра данных EWT.
Примечание Для получения справки по команде tracerpt введите в командной строке команду tracerpt /?.
logman query -ets --- List the ETW sessions. This is optional. logman update XE_DEFAULT_ETW_SESSION -fd -ets --- Flush the ETW log. tracerpt %temp%\xeetw.etl -o xeetw.txt --- Dump the events so they can be seen.
Введите следующие инструкции, чтобы прекратить сеанс и удалить его с сервера.
ALTER EVENT SESSION test0 ON SERVER STATE = STOP go DROP EVENT SESSION test0 ON SERVER go
См. также