Использование сеанса 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.