Menggunakan sesi system_health

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Sesi system_health ini adalah sesi Extended Events yang disertakan secara default dengan SQL Server dan Azure SQL Managed Instance. Sesi ini dimulai secara otomatis ketika Mesin Database dimulai, dan berjalan tanpa overhead performa yang terlihat. Sesi ini mengumpulkan data sistem yang dapat Anda gunakan untuk membantu memecahkan masalah performa di Mesin Database.

Penting

Kami menyarankan agar Anda tidak menghentikan, mengubah, atau menghapus system_health sesi. Setiap perubahan yang dilakukan pada system_health pengaturan sesi mungkin ditimpa oleh pembaruan produk di masa mendatang.

Sesi ini mengumpulkan informasi yang mencakup informasi berikut:

  • sql_text dan session_id untuk setiap sesi yang mengalami kesalahan yang memiliki tingkat keparahan >= 20.
  • sql_text dan session_id untuk sesi apa pun yang mengalami kesalahan terkait memori. Kesalahannya termasuk 17803, 701, 802, 8645, 8651, 8657 dan 8902.
  • Catatan masalah penjadwal yang tidak menghasilkan. Ini muncul di log kesalahan SQL Server sebagai kesalahan 17883.
  • Kebuntuan apa pun yang terdeteksi, termasuk grafik kebuntuan.
  • callstack, sql_text, dan session_id untuk sesi apa pun yang telah menunggu kait (atau sumber daya menarik lainnya) selama > 15 detik.
  • callstack, sql_text, dan session_id untuk sesi apa pun yang telah menunggu kunci selama > 30 detik.
  • callstack, sql_text, dan session_id untuk sesi apa pun yang telah menunggu lama untuk menunggu sebelumnya. Durasi bervariasi menurut jenis tunggu. Penantian preemptive adalah tempat SQL Server menunggu panggilan API eksternal.
  • callstack dan session_id untuk alokasi CLR dan kegagalan alokasi virtual.
  • Peristiwa buffer cincin untuk broker memori, monitor penjadwal, OOM simpul memori, keamanan, dan konektivitas.
  • Komponen sistem dihasilkan dari sp_server_diagnostics.
  • Kesehatan instans yang dikumpulkan oleh scheduler_monitor_system_health_ring_buffer_recorded.
  • Kegagalan Alokasi CLR.
  • kesalahan Koneksi ivitas menggunakan connectivity_ring_buffer_recorded.
  • Kesalahan keamanan menggunakan security_error_ring_buffer_recorded.

Catatan

Untuk informasi selengkapnya tentang kebuntuan, lihat panduan Kebuntuan. Untuk informasi selengkapnya tentang pesan kesalahan SQL, lihat Peristiwa dan kesalahan Mesin Database.

Menampilkan data sesi system_health

Sesi ini menggunakan target buffer cincin dan target file peristiwa untuk menyimpan data. Target file peristiwa dikonfigurasi dengan ukuran maksimum 5 MB dan kebijakan penyimpanan file 4 file.

Untuk melihat data sesi dari target buffer cincin dengan antarmuka pengguna Extended Events yang tersedia di SQL Server Management Studio, lihat Tampilan Tingkat Lanjut Data Target dari Acara yang Diperluas di SQL Server - Tonton data langsung.

Untuk menampilkan data sesi dari target buffer cincin dengan Transact-SQL, gunakan kueri berikut:

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'

Untuk melihat data sesi dari file peristiwa, gunakan UI penampil peristiwa Extended Events yang tersedia di SQL Server Management Studio. Untuk informasi selengkapnya, lihat Menampilkan data peristiwa di SQL Server Management Studio.

Memulihkan sesi system_health

Jika Anda menghapus system_health sesi, Anda dapat memulihkannya dengan menjalankan u_tables.sql skrip. File ini terletak di folder berikut, di mana C: mewakili drive tempat Anda menginstal file program SQL Server, dan MSSQLnn versi utama SQL Server:

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

Setelah memulihkan sesi, Anda harus memulainya dengan menggunakan ALTER EVENT SESSION pernyataan atau dengan menggunakan node Extended Events di Object Explorer. Jika tidak, sesi dimulai secara otomatis saat Anda memulai ulang layanan SQL Server di lain waktu.

Sesi system_health di Azure SQL

Di Azure SQL Managed Instance, system_health data sesi dapat dilihat dengan mengklik kanan salah satu event_file atau ring_buffer target di Object Explorer, dan memilih Tampilkan Data Target.

Tidak ada sesi Extended Event bawaan system_health di Azure SQL Database, tetapi Anda dapat menggunakan sys.fn_xe_file_target_read_file() fungsi untuk membaca dari sesi Extended Event yang Anda buat sendiri dan simpan di Azure Storage. Untuk panduan, lihat Kode target File Peristiwa untuk Acara yang Diperluas di Azure SQL Database.