Das Transaktionsprotokoll für die Datenbank 'Datenbankname' ist aufgrund von 'XTP_CHECKPOINT' voll.

26

Ich habe eine Frage zu XTP_CHECKPOINT.

Ich verwende SQL Server 2014. Ich habe eine Datenbank, die sich im SIMPLE-Wiederherstellungsmodellmodus befindet. Es wird auch repliziert.

Es gibt keine offenen Transaktionen. Ich bin gelaufen DBCC OPENTRANund es kehrt zurück:

"Keine aktiven offenen Transaktionen."

Diese Meldung wird jedoch immer wieder angezeigt, wenn ich versuche, eine Tabelle zu erstellen oder zu löschen oder Daten zu löschen:
(Ich habe meinen tatsächlichen Datenbanknamen durch das Wort ersetzt. database_name)

"Das Transaktionsprotokoll für die Datenbank 'Datenbankname' ist aufgrund von 'XTP_CHECKPOINT' voll."

Weiß jemand, warum dies passieren könnte, und was noch wichtiger ist, wie kann ich dafür sorgen, dass es aufhört?

Und ja, die Datenbank befindet sich wirklich im Modus EINFACHES Wiederherstellungsmodell. Das Transaktionslog sollte also automatisch abgeschnitten werden.

Übrigens hat eine andere Datenbank, die sich im vollständigen Wiederherstellungsmodus befindet, den gleichen Fehler zurückgegeben:

Das Transaktionsprotokoll für die Datenbank 'Datenbankname' ist aufgrund von 'XTP_CHECKPOINT' voll.

Ich habe versucht, die Einstellungen für das Protokollwachstum in "Unbegrenztes Wachstum" zu ändern, aber ich konnte nicht zulassen, dass derselbe Fehler zurückgegeben wird.

Ich kann das Problem ohne XTP-Zeug reproduzieren, mit Ausnahme nur der Dateigruppe. Hier ist, wie: http://pastebin.com/jWSiEU9U

user3469285
quelle

Antworten:

8

Ich hatte ein ähnliches Problem: Ich hatte keine Replikation, aber als ich die speicheroptimierte Tabelle als Testdatenbank im einfachen Wiederherstellungsmodus verwendete, wurden meine Transaktionsprotokolle nicht abgeschnitten. Manuelles Abschneiden, auch direkt nach einer vollständigen Sicherung, ergab den Fehler:

Die Protokolldatei X kann nicht verkleinert werden, da die am Ende der Datei befindliche logische Protokolldatei verwendet wird.

Ein manueller Prüfpunkt ist fehlgeschlagen:

Meldung 41315, Ebene 16, Status 4, Zeile N Checkpoint-Vorgang in Datenbank X fehlgeschlagen.

Ein manueller Prüfpunkt konnte erst unmittelbar nach dem Neustart des SQL-Dienstes erfolgreich ausgeführt werden, was aufgrund der Größe meiner Multi-Tb-Datenbank zu einem Status In Recovery von 4 Stunden führte. Ich habe auch versucht, das Autogrowth auf eine bestimmte Größe einzustellen, aber am Ende lief alles genauso: Füllen Sie die Transaktionsprotokolle aus, bis kein Platz mehr vorhanden ist.

Nach Tagen und Nächten fand ich schließlich die Lösung für mein Problem, indem ich das kumulative Update 3 für SQL Server 2014 SP1 installierte

Gregory Liénard
quelle
9

Stellen Sie zunächst sicher, dass die Replikation dies nicht verursacht, wie im Verbindungselement angegeben. "Log_wait_reuse_desc = XTP_CHECKPOINT bedeutet nicht unbedingt, dass der XTP-Checkpoint-Worker die Protokollkürzung aufhält." Beginnen Sie also mit dem Ausführen sp_repltransund stellen Sie sicher, dass alle Daten verteilt wurden.

Dann gibt es hier diesen kleinen Ausschnitt :

"es passiert in einer Datenbank, die eine speicheroptimierte Dateigruppe hat, egal ob es speicheroptimierte Tabellen gibt oder nicht.

Die aktuelle Problemumgehung setzt das AutoGrown auf eine feste Größe. Oder ändern Sie den Wiederherstellungsmodus in "Einfach" und verkleinern Sie das Protokoll. "

Wenn die Bereinigung der Replikation nicht funktioniert, versuchen Sie Folgendes:

checkpoint;
dbcc shrinkfile (Logfile, truncateonly)
alter database [database] modify file (filename = 'TRANSACTIONLOG', FILEGROWTH = 5MB)

Es wird nicht angegeben, ob dies für die Protokolldatei oder die Datenbankdateien gilt. Versuchen Sie zunächst, die Protokolldateien zu testen, und stellen Sie die Datenbankdateien ansonsten auf ein festgelegtes Wachstum ein:

Spörri
quelle
3

Ich konnte das Problem umgehen, indem ich eine weitere Protokolldatei hinzufügte, die es mir dann ermöglichte, eine vollständige Sicherung durchzuführen, die Größe der primären Protokolldatei anzupassen und das Wachstum zu begrenzen sowie die zusätzliche Protokolldatei zu entfernen, die zur Behebung des XTP_CHECKPOINT-Problems hinzugefügt wurde.

user78285
quelle
1

Ich habe das mit einem Kunden erlebt. Die Protokoll- und In-Memory-FILESTREAM-Datendateien befanden sich auf demselben Laufwerk. Sie haben eine neue Protokolldatei erstellt (nur wenige haben dies vorgeschlagen), aber das System kann CHECKPOINT nicht ausführen, da die speicherinternen Prüfpunktdateien (* .HKCKP) nicht erstellt werden können.

Versuchen Sie, Speicherplatz auf dem Laufwerk mit den im Speicher befindlichen FILESTREAM-Daten freizugeben.

Phil Grayson
quelle