Freigeben über


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 startet automatisch, wenn die Datenbank-Engine gestartet wird, und läuft ohne spürbaren Leistungs-Overhead. Die Sitzung sammelt Systemdaten, die Sie bei der Behandlung von Leistungsproblemen in der Datenbank-Engine verwenden können.

Wichtig

Wir empfehlen Ihnen, das Repository nicht zu stoppen, zu ändern oder zu löschen. system_health Sitzung. Alle Änderungen, die an der system_health Die Sitzungseinstellungen können durch ein zukünftiges Produktupdate überschrieben werden.

Die Sitzung sammelt Informationen, die folgende Angaben enthalten

  • Die sql_text und session_id für alle Sitzungen, in denen ein Fehler mit einem bestimmten Schweregrad auftritt >= 20.
  • Die sql_text und session_id für alle Sitzungen, bei denen ein speicherbezogener Fehler auftritt. Zu diesen Fehlern zählen 17803, 701, 802, 8645, 8651, 8657 und 8902.
  • Aufzeichnungen zu allen nicht gelösten Zeitplanungsproblemen. Diese erscheinen im SQL-Server-Fehlerprotokoll als Fehler 17883.
  • Alle Deadlocks, die erkannt werden, einschließlich des Deadlockdiagramms.
  • Die callstack, sql_text, und session_id für alle Sitzungen, die auf Latches (oder andere interessante Ressourcen) gewartet haben, für > 15 Sekunden.
  • Die callstack, sql_text, und session_id für alle Sitzungen, die auf Sperren für > 30 Sekunden.
  • Die callstack, sql_text, und session_id für alle Sitzungen, die eine lange Zeit auf preemptive Waits gewartet haben. Die Dauer schwankt je nach Wartetyp. Ein präemptives Warten bedeutet, dass SQL-Server auf externe API-Aufrufe wartet.
  • Die callstack und session_id für CLR-Zuweisung und virtuelle Zuweisungsfehler.
  • Die Ringpufferereignisse für den Speicherbroker, die Zeitplanungsmodul-Überwachung, Speicherknoten-OOMs sowie Sicherheit und Konnektivität.
  • Die Systemkomponente ergibt sich aus sp_server_diagnostics.
  • Gesundheit der Instanz gesammelt von scheduler_monitor_system_health_ring_buffer_recorded.
  • CLR-Belegungsfehler.
  • Fehler in der Verbindung mit connectivity_ring_buffer_recorded.
  • Sicherheitsfehler durch security_error_ring_buffer_recorded.

Hinweis

Weitere Informationen zu Deadlocks finden Sie in der Anleitung für Deadlocks. Weitere Informationen zu SQL-Fehlermeldungen finden Sie unter Ereignisse und Fehler der Datenbank-Engine.

Anzeigen der system_health Sitzungsdaten

Die Sitzung verwendet zum Speichern der Daten sowohl das Ringpufferziel als auch das Ereignisdateiziel. Das Ereignisdateiziel ist mit einer maximalen Größe von 5 MB und einer Richtlinie für die Aufbewahrung von 4 Dateien konfiguriert. In SQL Server Standard- und Enterprise-Editionen hat das Ereignisdateiziel höhere Grenzwerte: eine maximale Größe von 100 MB und eine Dateiaufbewahrungsrichtlinie von 10 Dateien.

To Ansicht the Sitzung data von der ring buffer target mit dem Erweiterte Ereignisse Benutzer interface available in SQL-Server Management Studio, siehe Fortgeschrittene Anzeige von Zieldaten aus erweiterten Ereignissen in SQL-Server - Beobachten von Live-Daten.

Um die Sitzungsdaten aus dem Ringpufferziel mit Transact-SQL anzuzeigen, 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 Ereignisanzeige-UI Erweiterte Ereignisse. Weitere Informationen finden Sie unter Anzeigen von Ereignisdaten in SQL Server Management Studio.

Wiederherstellen der system_health-Sitzung

Wenn Sie das Feld system_health Wenn die Sitzung unterbrochen wurde, können Sie sie wiederherstellen, indem Sie die u_tables.sql Skript. Diese Datei befindet sich im folgenden Ordner, wo C: steht für das Laufwerk, 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 des Befehls ALTER EVENT SESSION Anweisung oder durch Verwendung der Erweiterte Ereignisse Knoten im Objekt-Explorer. Andernfalls startet die Sitzung automatisch, wenn Sie den SQL-Server-Dienst das nächste Mal neu starten.

Die system_health Sitzung in Azure-SQL

In Azure-SQL Verwaltete Instanz, das system_health Sitzungsdaten können angezeigt werden, indem Sie mit der rechten Maustaste entweder event_file or ring_buffer Ziel im Objekt Explorer, und wählen Sie Zieldaten anzeigen.

Es gibt kein eingebautes system_health Erweiterte Ereignissitzung in Azure-SQL-Datenbank, aber Sie können die sys.fn_xe_file_target_read_file() Funktion zum Lesen von Extended Event-Sitzungen, die Sie selbst erstellen und in Azure Storage speichern. Für einen Leitfaden, siehe Ereignisdatei-Zielcode für erweiterte Ereignisse in Azure-SQL-Datenbank.