Использование сеанса 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.
- Все обнаруженные взаимоблокировки, включая граф взаимоблокировок.
- ,
callstack
sql_text
а такжеsession_id
для любых сеансов, которые ждали блокировки (или другие интересные ресурсы) в течение > 15 секунд. - ,
callstack
sql_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.