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

Область применения: SQL Server Управляемый экземпляр SQL Azure

Сеанс system_health — это сеанс расширенных событий, включенный по умолчанию в SQL Server и Управляемый экземпляр SQL Azure. Этот сеанс запускается автоматически при запуске ядро СУБД и выполняется без каких-либо заметных затрат на производительность. Сеанс собирает системные данные, которые можно использовать для устранения проблем с производительностью в ядро СУБД.

Внимание

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

Сеанс собирает сведения, которые содержат следующие сведения:

  • session_id И sql_text для любых сеансов, которые сталкиваются с ошибкой с серьезностью >= 20.
  • session_id И sql_text для любых сеансов, которые сталкиваются с ошибкой, связанной с памятью. К этим ошибкам относятся 17803, 701, 802, 8645, 8651, 8657 и 8902.
  • Запись всех нерешенных проблем планировщика. Они отображаются в журнале ошибок SQL Server как ошибка 17883.
  • Все обнаруженные взаимоблокировки, включая граф взаимоблокировок.
  • , callstacksql_textа также session_id для любых сеансов, которые ждали блокировки (или другие интересные ресурсы) в течение > 15 секунд.
  • , callstacksql_textа также session_id для любых сеансов, которые ждали блокировки в течение > 30 секунд.
  • callstack, sql_textи session_id для любых сеансов, которые ждали долгое время для предупреждающих ожиданий. Длительность зависит от типа ожидания. Предварительное ожидание заключается в том, что SQL Server ожидает внешних вызовов API.
  • session_id И callstack для сбоев выделения среды 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 см. в ядро СУБД событиях и ошибках.

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

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

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

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

SELECT CAST(xet.target_data as xml) AS target_data
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. Дополнительные сведения см. в разделе "Просмотр данных о событиях" в SQL Server Management Studio.

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

При удалении сеанса system_health его можно восстановить, выполнив u_tables.sql скрипт. Этот файл расположен в следующей папке, где C: представлен диск, на котором установлены файлы программы SQL Server, а MSSQLnn также основная версия SQL Server:

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

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

Сеанс system_health в SQL Azure

В Управляемый экземпляр SQL Azure данные сеанса system_health можно просматривать, щелкнув event_file правой кнопкой мыши или ring_buffer целевой объект в обозреватель объектов, а затем выбрав "Просмотреть целевые данные".

В База данных SQL Azure нет встроенного system_health сеанса расширенных событий, но вы можете использовать sys.fn_xe_file_target_read_file() функцию для чтения из сеансов расширенных событий, которые вы создаете самостоятельно и храните в служба хранилища Azure. Пошаговое руководство см. в разделе "Целевой код файла событий" для расширенных событий в База данных SQL Azure.