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

Применимо к: SQL Server Управляемый экземпляр SQL Azure

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

Важно!

Поэтому этот сеанс не рекомендуется останавливать или удалять. Любые изменения, внесенные в параметры сеанса system_health, могут быть перезаписаны будущим обновлением продукта.

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

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

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

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

  • Все обнаруженные взаимоблокировки, включая граф взаимоблокировок.

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

  • Вызовы,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.

Примечание

Дополнительные сведения о взаимоблокировках см. в руководстве по взаимоблокировкам.
Дополнительные сведения о сообщениях об ошибках SQL см. в разделе Ошибки ядра СУБД.

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

В сеансе для хранения данных используется целевой кольцевой буфер и целевой файл событий. Целевой файл событий имеет максимальный размер 5 МБ и политику хранения файлов — 4 файла.

Для просмотра данных сеанса из целевого кольцевого буфера с пользовательским интерфейсом расширенных событий, доступным в SQL Server Management Studio, см. раздел Расширенный просмотр целевых данных из расширенных событий в SQL Server – просмотр динамических данных.

Чтобы просмотреть данные сеанса из целевого объекта кольцевого буфера с помощью Transact-SQL, используйте следующий запрос:

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'  

Для просмотра данных сеанса из файла событий пользуйтесь доступным пользовательским интерфейсом расширенных событий в SQL Server Management Studio. Дополнительные сведения см. в разделе Advanced Viewing of Target Data from Extended Events in SQL Server(Расширенный просмотр целевых данных из расширенных событий в SQL Server).

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

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

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

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

Сеанс system_health в Azure SQL

В базе данных Azure SQL нет встроенного сеанса system_health расширенных событий, но вы можете использовать для sys.fn_xe_file_target_read_file чтения из сеансов расширенных событий, создаваемых самостоятельно и сохраняемых в Хранилище BLOB-объектов Azure. Пример пошагового руководства см. в статье Код целевого объекта файла событий для расширенных событий в базе данных Azure SQL.

В Управляемый экземпляр SQL Azure целевой объект XEL сеанса system_health расширенных событий недоступен, но system_health можно получить через целевой объект кольцевого буфера. Дополнительные сведения см. в статье Целевые объекты для расширенных событий в SQL Server.

См. также раздел

Дальнейшие действия