Freigeben über


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 und session_id aller Sitzungen, in denen ein Fehler mit einem Schweregrad = >20 aufgetreten ist.
  • Die sql_text und session_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 und session_id aller Sitzungen, die mehr als > 15 Sekunden lang auf Latches (oder andere relevante Ressourcen) gewartet haben.
  • Die callstack, sql_text und session_id aller Sitzungen, die mehr als > 30 Sekunden lang auf Sperren gewartet haben.
  • Die callstack, sql_text und session_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 und session_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.