Menggunakan sesi system_health
Berlaku untuk: SQL Server Azure 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
dansession_id
untuk setiap sesi yang mengalami kesalahan yang memiliki tingkat keparahan >= 20.sql_text
dansession_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
, dansession_id
untuk sesi apa pun yang telah menunggu kait (atau sumber daya menarik lainnya) selama > 15 detik.callstack
,sql_text
, dansession_id
untuk sesi apa pun yang telah menunggu kunci selama > 30 detik.callstack
,sql_text
, dansession_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
dansession_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 konektivitas 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.