Использование сеанса system_health

Сеанс system_health является сеансом расширенных событий, который по умолчанию включен в состав SQL Server. Этот сеанс запускается автоматически при запуске Компонент SQL Server Database Engine и выполняется без заметного воздействия на производительность. В этом сеансе собираются системные данные, которые можно использовать для устранения неполадок, связанных с производительностью компонента Компонент Database Engine. Поэтому этот сеанс не рекомендуется останавливать или удалять.

Сеанс собирает следующие данные.

  • sql_text и session_id для всех сеансов, в которых возникает ошибка с уровнем серьезности >=20.

  • sql_text и session_id для всех сеансов, в которых возникает ошибка, связанная с памятью. К этим ошибкам относятся 17803, 701, 802, 8645, 8651, 8657 и 8902.

  • Запись всех нерешенных проблем планировщика. (Они записываются в журнал ошибок SQL Server в виде ошибки 17883.)

  • Все обнаруженные взаимоблокировки.

  • callstack, sql_text и session_id для всех сеансов, которые ожидали снятия кратковременной блокировки (или других необходимых ресурсов) более > 15 с.

  • callstack, sql_text и session_id для всех сеансов, которые ожидали снятия блокировки более > 30 с.

  • callstack, sql_text и session_id для всех сеансов, которые долгое время находились в режиме ожидания с вытеснением. Длительность зависит от типа ожидания. Ожидание с вытеснением возникает в том случае, если SQL Server ожидает внешних вызовов API.

  • Значения callstack и session_id для ошибок размещения CLR и виртуального выделения.

  • События ring_buffer для брокера памяти, монитора планировщиков, OOM узла памяти, безопасности и возможности подключения.

  • Результаты из sp_server_diagnostics.

  • Данные об исправности экземпляра, собираемые scheduler_monitor_system_health_ring_buffer_recorded.

  • Сбои размещения CLR.

  • Ошибки возможности подключения при использовании connectivity_ring_buffer_recorded.

  • Ошибки безопасности при использовании security_error_ring_buffer_recorded.

Просмотр данных сеанса

В сеансе для хранения данных используется цель «Кольцевой буфер». Для просмотра данных сеанса используйте следующий запрос.

SELECT CAST(xet.target_data as xml) FROM sys.dm_xe_session_targets xet
JOIN sys.dm_xe_sessions xe
ON (xe.address = xet.event_session_address)
WHERE xe.name = 'system_health'

Для просмотра данных сеанса событий из файла пользуйтесь доступным пользовательским интерфейсом расширенных событий в среде Management Studio. Дополнительные сведения см. в разделе Просмотр данных о сеансе событий.

Восстановление сеанса system_health

Если сеанс system_health был удален, то его вы можете восстановить, выполнив файл u_tables.sql в редакторе запросов. Данный файл находится в следующей папке, где С: означает диск, на котором установлены файлы программы SQL Server:

C:\Program Files\Microsoft SQL Server\MSSQL11.<instanceid>\MSSQL\Install

Имейте в виду, что после восстановления сеанса необходимо его запустить с помощью инструкции ALTER EVENT SESSION или через узел Расширенные события в обозревателе объектов. Если этого не сделать, сеанс запустится автоматически при следующем перезапуске службы SQL Server.

См. также

Основные понятия

Средства расширенных событий