Verwenden der system_health-Sitzung
Gilt für:SQL ServerAzure SQL Managed Instance
Die system_health
Sitzung ist eine erweiterte Ereignissitzung, die standardmäßig in SQL Server und Azure SQL verwaltete Instanz enthalten ist. Diese Sitzung wird automatisch gestartet, wenn die Datenbank-Engine gestartet wird und ohne spürbaren Leistungsaufwand ausgeführt wird. Die Sitzung sammelt Systemdaten, mit denen Sie Leistungsprobleme im Datenbank-Engine beheben können.
Wichtig
Es wird empfohlen, die Sitzung nicht zu beenden, zu ändern oder zu system_health
löschen. Alle An den system_health
Sitzungseinstellungen vorgenommenen Änderungen werden möglicherweise durch ein zukünftiges Produktupdate überschrieben.
Die Sitzung sammelt Informationen, die die folgenden Informationen enthalten:
- Die
sql_text
undsession_id
für alle Sitzungen, die auf einen Fehler stoßen, der einen Schweregrad >= 20 hat. - Die
sql_text
undsession_id
für alle Sitzungen, die auf einen speicherbezogenen Fehler stoßen. Zu diesen Fehlern zählen 17803, 701, 802, 8645, 8651, 8657 und 8902. - Aufzeichnungen zu allen nicht gelösten Zeitplanungsproblemen. Diese werden im SQL Server-Fehlerprotokoll als Fehler 17883 angezeigt.
- Alle Deadlocks, die erkannt werden, einschließlich des Deadlockdiagramms.
- Die
callstack
,sql_text
undsession_id
für alle Sitzungen, die auf Latches (oder andere interessante Ressourcen) für > 15 Sekunden gewartet haben. - Das
callstack
,sql_text
undsession_id
für alle Sitzungen, die auf Sperren für > 30 Sekunden gewartet haben. - Die
callstack
,sql_text
undsession_id
für alle Sitzungen, die lange auf vorab warten gewartet haben. Die Dauer schwankt je nach Wartetyp. Eine präventive Wartezeit besteht darin, dass SQL Server auf externe API-Aufrufe wartet. - Die
callstack
und für CLR-Zuordnungssession_id
- und virtuelle Zuordnungsfehler. - Die Ringpufferereignisse für den Speicherbroker, die Zeitplanungsmodul-Überwachung, Speicherknoten-OOMs sowie Sicherheit und Konnektivität.
- Die Systemkomponente ergibt sich aus
sp_server_diagnostics
. scheduler_monitor_system_health_ring_buffer_recorded
Von .- CLR-Belegungsfehler.
- Verbinden ivitätsfehler.
connectivity_ring_buffer_recorded
- Sicherheitsfehler mithilfe von
security_error_ring_buffer_recorded
.
Hinweis
Weitere Informationen zu Deadlocks finden Sie in der Deadlocks-Anleitung. Weitere Informationen zu SQL-Fehlermeldungen finden Sie unter Datenbank-Engine Ereignisse und Fehler.
Anzeigen der system_health Sitzungsdaten
Die Sitzung verwendet sowohl das Ringpufferziel als auch das Ereignisdateiziel, um die Daten zu speichern. Das Ereignisdateiziel ist mit einer maximalen Größe von 5 MB und einer Richtlinie für die Aufbewahrung von 4 Dateien konfiguriert.
Informationen zum Anzeigen der Sitzungsdaten aus dem Ringpufferziel mit der in SQL Server Management Studio verfügbaren Benutzeroberfläche für erweiterte Ereignisse finden Sie unter "Erweiterte Anzeige von Zieldaten aus erweiterten Ereignissen in SQL Server – Livedaten überwachen".
Verwenden Sie die folgende Abfrage, um die Sitzungsdaten aus dem Ringpufferziel mit Transact-SQL anzuzeigen:
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'
Um die Sitzungsdaten aus der Ereignisdatei anzuzeigen, verwenden Sie die Benutzeroberfläche der Ereignisanzeige für erweiterte Ereignisse, die in SQL Server Management Studio verfügbar ist. Weitere Informationen finden Sie unter Anzeigen von Ereignisdaten in SQL Server Management Studio.
Wiederherstellen der system_health-Sitzung
Wenn Sie die system_health
Sitzung löschen, können Sie sie wiederherstellen, indem Sie das u_tables.sql
Skript ausführen. Diese Datei befindet sich im folgenden Ordner, in dem C:
das Laufwerk steht, auf dem Sie die SQL Server-Programmdateien installiert haben, und MSSQLnn
die Hauptversion von SQL Server:
C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install
Nachdem Sie die Sitzung wiederhergestellt haben, müssen Sie sie mithilfe der ALTER EVENT SESSION
Anweisung oder mithilfe des Knotens "Erweiterte Ereignisse" in Objekt-Explorer starten. Andernfalls wird die Sitzung automatisch gestartet, wenn Sie den SQL Server-Dienst das nächste Mal neu starten.
Die system_health-Sitzung in Azure SQL
In Azure SQL verwaltete Instanz können die Sitzungsdaten angezeigt werden, indem Sie in Objekt-Explorer mit der system_health
rechten Maustaste darauf klicken event_file
und ring_buffer
"Zieldaten anzeigen" auswählen.
Es gibt keine integrierte system_health
erweiterte Ereignissitzung in Azure SQL-Datenbank, Aber Sie können die sys.fn_xe_file_target_read_file()
Funktion verwenden, um aus erweiterten Ereignissitzungen zu lesen, die Sie selbst erstellen und in Azure Storage speichern. Eine exemplarische Vorgehensweise finden Sie unter Ereignisdateizielcode für erweiterte Ereignisse in Azure SQL-Datenbank.
Zugehöriger Inhalt
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für