Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Symptome
Wenn Ihre Datenbanken das In-Memory-OLTP-Feature in SQL Server 2022 aktiviert haben, stellen Sie fest, dass die Transaktionsprotokolldatei kontinuierlich wächst. Darüber hinaus enthält das SQL Server-Fehlerprotokoll möglicherweise Meldungen wie Close thread is falling behind: 4 checkpoints outstanding.
Wenn Sie die SQL Server-Instanz neu starten, stellen Sie möglicherweise fest, dass der Datenbankwiederherstellungsvorgang viel Zeit in Anspruch nimmt.
Beheben des Problems mit sys.databases und sys.dm_db_xtp_checkpoint_stats
Wenn Sie die Katalogansicht sys.databases verwenden, um Informationen zu sammeln und dieses Problem zu beheben, zeigt die Spalte
log_reuse_wait_descXTP_CHECKPOINTals Grund für eine lange Abschneidung an. Dieser Wert gibt an, dass das Transaktionsprotokoll auf einen In-Memory-OLTP-Prüfpunkt (früher Hekaton) wartet. Es deutet auf eine Verzögerung bei Checkpointing-Vorgängen hin, was sich möglicherweise auf die Leistung oder das Wachstum von Protokolldateien auswirkt.Wenn Sie die dynamische SQL Server-Verwaltungssicht (DMV) sys.dm_db_xtp_checkpoint_stats verwenden, um Informationen zu sammeln und dieses Problem zu beheben, zeigt die Spalte
outstanding_checkpoint_countüber einen längeren Zeitraum einen Wert ungleich Null an. Es weist darauf hin, dass Checkpoints nicht effizient ausgeführt werden, was sich möglicherweise auf die Leistung und das Wachstum von Protokolldateien auswirkt.
Ursache
SQL Server 2022 hat neue Funktionen eingeführt, mit denen die Speicherverwaltung auf großen Speicherservern verbessert wird, um Speichermangelzustände zu vermeiden. Ein bekanntes Problem in dieser Änderung kann manchmal zu dem verhalten führen, das im Abschnitt "Symptome" beschrieben wird.
Auflösung
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
- Fügen Sie -T9810 als Startparameter für die SQL Server-Instanz hinzu.
- Starten Sie die Instanz neu.
- Erstellen Sie einen Prüfpunkt, führen Sie eine Protokollsicherung durch, beobachten Sie
log_reuse_wait_descdas Protokoll, und verkleinern Sie das Protokoll, falls erforderlich, um Speicherplatz freizugeben.
Notiz
Dieses Problem wurde im kumulativen Update 7 für SQL Server 2022 behoben.
Weitere Informationen
Das Traceflag 9810 verhindert, dass die In-Memory-OLTP-Engine Thread Local Storage (TLS)-Speicher zurückfordert, und setzt das Verhalten auf das von SQL Server 2019 zurück.