Verwenden der system_health-Sitzung

Gilt für:yes SQL Server (alle unterstützten Versionen) YesAzure SQL Managed Instance

Bei der system_health-Sitzung handelt es sich um eine standardmäßig in SQL Serverenthaltene Sitzung für erweiterte Ereignisse. Diese Sitzung wird automatisch beim Start von SQL Server-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-Enginebeheben können.

Wichtig

Es wird empfohlen, die Systemintegritätssitzung (system_health) 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 für alle Sitzungen, die auf einen Fehler stoßen, der einen Schweregrad >= 20 aufweist.

  • 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.

  • Der Callstack, sql_text und session_id für alle Sitzungen, die auf Klammern (oder andere interessante Ressourcen) gewartet haben, für > 15 Sekunden.

  • Der Callstack, sql_text und session_id für alle Sitzungen, die auf > Sperren gewartet haben, 30 Sekunden lang.

  • 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.

  • 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.

  • Mit scheduler_monitor_system_health_ring_buffer_recorded erfasste Integrität der Instanz.

  • CLR-Belegungsfehler.

  • Konnektivitätsfehler mit connectivity_ring_buffer_recorded.

  • Sicherheitsfehler mit security_error_ring_buffer_recorded.

Hinweis

Weitere Informationen zu Deadlocks finden Sie unter dem Stichwort „Deadlocks“ im Handbuch zu Transaktionssperren und Zeilenversionsverwaltung.
Weitere Informationen zu SQL-Fehlermeldungen finden Sie unter Datenbankenginefehler.

Anzeigen der Sitzungsdaten

In der Sitzung werden die Daten im Ringpufferziel und 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.

Verwenden Sie die folgende Abfrage, um die Sitzungsdaten aus dem Ringpufferziel mit Transact-SQL anzuzeigen:

SELECT CAST(xet.target_data as xml) 
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. Weitere Informationen finden Sie unter Erweiterte Ansicht von Zieldaten aus erweiterten Ereignissen in SQL Server.

Wiederherstellen der system_health Sitzung

Wenn Sie die system_health-Sitzung gelöscht haben, können Sie diese wiederherstellen, indem Sie die Datei u_tables.sql im Abfrage-Editor ausführen. Diese Datei befindet sich im folgenden Ordner, wobei C: dem Laufwerk entspricht, auf dem Sie die SQL Server-Programmdateien installiert haben, und MSSQL1x ist die Hauptversion von SQL Server:

C:\Program Files\Microsoft SQL Server\MSSQL1x.\<*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

Es gibt keine integrierte system_health erweiterte Ereignissitzung in Azure SQL-Datenbank, sie können jedoch verwendensys.fn_xe_file_target_read_file, um aus erweiterten Ereignissitzungen zu lesen, die Sie selbst erstellen und in Azure Blob Storage speichern können. Ein Beispiel für eine exemplarische Vorgehensweise finden Sie unter "Ereignisdatei"-Zielcode für erweiterte Ereignisse in Azure SQL-Datenbank.

In Azure SQL Managed Instance ist das system_health Session XEL-Ziel für erweiterte Ereignisse nicht zugänglich, aber system_health können über das Ringpufferziel zugegriffen werden. Weitere Informationen finden Sie unter Ziele für erweiterte Ereignisse in SQL Server.

Siehe auch

Nächste Schritte