Verwenden der system_health-Sitzung
Gilt für: SQL Server Azure SQL Managed Instance
Die system_health
Sitzung ist eine erweiterte Ereignissitzung, die standardmäßig in SQL Server und Azure SQL Managed Instance enthalten ist. Diese Sitzung wird automatisch beim Start von Datenbank-Engine gestartet und ohne merkliche Auswirkungen auf die Leistung ausgeführt. In der Sitzung werden Systemdaten erfasst, mit deren Hilfe Sie Leistungsprobleme in Datenbank-Engine beheben können.
Wichtig
Es wird empfohlen, die system_health
Systemintegritätssitzung nicht zu beenden, zu ändern oder zu löschen. Alle Änderungen, die an der system_health
Sitzung vorgenommen werden, können durch ein zukünftiges Produktupdate überschrieben werden.
In der Sitzung werden u. a. folgende Informationen erfasst:
- Die
sql_text
undsession_id
aller Sitzungen, in denen ein Fehler mit einem Schweregrad = >20 aufgetreten ist. - Die
sql_text
undsession_id
aller Sitzungen, in denen ein arbeitsspeicherbezogener Fehler aufgetreten ist. 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
aller Sitzungen, die mehr als > 15 Sekunden lang auf Latches (oder andere relevante Ressourcen) gewartet haben. - Die
callstack
,sql_text
undsession_id
aller Sitzungen, die mehr als > 30 Sekunden lang auf Sperren gewartet haben. - Die
callstack
,sql_text
undsession_id
aller Sitzungen, die lange auf präemptive Wartevorgänge gewartet haben. Die Dauer schwankt je nach Wartetyp. Bei einem präemptiven Wartevorgang wartet SQL Server auf externe API-Aufrufe. - Die
callstack
undsession_id
für Fehler bei der CLR-Belegung und virtuellen Belegung. - Die Ringpufferereignisse für den Speicherbroker, die Zeitplanungsmodul-Überwachung, Speicherknoten-OOMs sowie Sicherheit und Konnektivität.
- Die Systemkomponente ergibt sich aus
sp_server_diagnostics
. - Instanz-Integrität gesammelt von
scheduler_monitor_system_health_ring_buffer_recorded
. - CLR-Belegungsfehler.
- Konnektivitätsfehler mithilfe von
connectivity_ring_buffer_recorded
. - Sicherheitsfehler mithilfe von
security_error_ring_buffer_recorded
.
Hinweis
Weitere Informationen zu Deadlocks finden Sie im Leitfaden zu Deadlocks. Weitere Informationen zu SQL-Fehlermeldungen finden Sie unter Datenbank-Engine-Ereignisse und -Fehler.
Die system_health-Sitzungsdaten anzeigen
In der Sitzung werden sowohl die Daten im Ringpufferziel als auch im Ereignisdateiziel gespeichert. Das Ereignisdateiziel ist mit einer maximalen Größe von 5 MB und einer Richtlinie für die Aufbewahrung von 4 Dateien konfiguriert.
Um die Sitzungsdaten aus dem Ringpufferziel mit der in SQL Server Management Studio verfügbaren Benutzeroberfläche für erweiterte Ereignisse anzuzeigen, lesen Sie Erweiterte Ansicht von Zieldaten aus erweiterten Ereignissen in SQL Server: Beobachten von Livedaten.
Zum Anzeigen der Sitzungsdaten aus dem Ringpufferziel mit Transact-SQL verwenden Sie die folgende Abfrage:
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 in SQL Server Management Studio verfügbare Benutzeroberfläche für erweiterte Ereignisse der Ereignisanzeige. 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, wobei C:
dem Laufwerk entspricht, auf dem Sie die SQL Server-Programmdateien installiert haben, und MSSQLnn
ist die Hauptversion von SQL Server:
C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install
Wenn Sie die Sitzung wiederhergestellt haben, müssen Sie die Sitzung mit der ALTER EVENT SESSION
-Anweisung oder über den Knoten Erweiterte Ereignisse im Objekt-Explorer starten. Andernfalls wird die Sitzung beim nächsten Neustart des SQL Server-Diensts automatisch gestartet.
Die system_health-Sitzung in Azure SQL
In einer Azure SQL Managed Instance können system_health
Sitzungsdaten angezeigt werden. Klicken Sie hierzu im Objekt-Explorer mit der rechten Maustaste entweder auf das event_file
oder ring_buffer
Ziel und wählen Sie Zieldaten anzeigen aus.
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. Für einen Durchgang gehen Sie zu Code des Ereignisdateiziels für erweiterte Ereignisse in Azure SQL-Datenbank.