Verwenden der system_health-Sitzung

Bei der system_health-Sitzung handelt es sich um eine standardmäßig in SQL Server enthaltene Sitzung für erweiterte Ereignisse. Diese Sitzung wird automatisch beim Start von SQL Server Database Engine (Datenbankmodul) gestartet und ohne merkliche Auswirkungen auf die Leistung ausgeführt. In der Sitzung werden Systemdaten erfasst, mit deren Hilfe Sie Leistungsprobleme in Database Engine (Datenbankmodul) beheben können. Daher empfiehlt es sich, die Sitzung nicht zu beenden oder zu löschen.

In der Sitzung werden u. a. folgende Informationen erfasst:

  • sql_text und session_id aller Sitzungen, in denen ein Fehler mit einem Schweregrad >= 20 aufgetreten ist.

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

  • callstack, sql_text und session_id aller Sitzungen, die > 15 Sekunden lang auf Latches (oder andere relevante Ressourcen) gewartet haben.

  • callstack, sql_text und session_id aller Sitzungen, die > 30 Sekunden lang auf Sperren gewartet haben.

  • 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 Aufrufliste und session_id für Fehler bei der CLR-Belegung und virtuellen Belegung.

  • Die ring_buffer-Ereignisse 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 erfasster Zustand der Instanz.

  • CLR-Belegungsfehler.

  • Konnektivitätsfehler mit connectivity_ring_buffer_recorded.

  • Sicherheitsfehler mit security_error_ring_buffer_recorded.

Anzeigen der Sitzungsdaten

In der Sitzung werden die Daten im Ringpufferziel gespeichert. Zum Anzeigen der Sitzungsdaten verwenden Sie die folgende Abfrage:

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 Management Studio verfügbare Benutzeroberfläche für erweiterte Ereignisse. Weitere Informationen finden Sie unter Anzeigen von Ereignissitzungsdaten.

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: das Laufwerk darstellt, auf dem Sie die SQL Server-Programmdateien installiert haben:

C:\Programme\Microsoft SQL Server\MSSQL11.<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.

Siehe auch

Konzepte

Tools für erweiterte Ereignisse