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 und session_id für alle Sitzungen, die auf einen Fehler stoßen, der einen Schweregrad >= 20 hat.
  • Die sql_text und session_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_textund session_id für alle Sitzungen, die auf Latches (oder andere interessante Ressourcen) für > 15 Sekunden gewartet haben.
  • Das callstack, sql_textund session_id für alle Sitzungen, die auf Sperren für > 30 Sekunden gewartet haben.
  • Die callstack, sql_textund session_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-Zuordnungs session_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_recordedVon .
  • 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.