Problembehandlung bei vollen Transaktionsprotokollen (SQL Server-Fehler 9002)
In diesem Thema werden mögliche Lösungen für volle Transaktionsprotokolle erörtert und Vermeidungsstrategien vorgeschlagen. Wenn das Transaktionsprotokoll voll ist, gibt die Microsoft SQL Server-Datenbank-Engine den Fehler 9002 aus. Das Protokoll kann sich füllen, wenn die Datenbank online ist oder wiederhergestellt wird. Falls das Protokoll während des Onlinezustands der Datenbank voll ist, bleibt die Datenbank online, aber sie kann nur gelesen und nicht aktualisiert werden. Wird das Protokoll während einer Wiederherstellung gefüllt, wird die Datenbank von Datenbank-Engine als RESOURCE PENDING (ausstehende Ressource) markiert. In beiden Fällen ist eine Aktion seitens des Benutzers erforderlich, um Speicherplatz im Protokoll verfügbar zu machen.
Mögliche Vorgehensweisen bei einem vollen Transaktionsprotokoll
Die richtige Reaktion auf ein volles Transaktionsprotokoll hängt zum Teil davon ab, aufgrund welcher Bedingungen das Protokoll gefüllt wurde. Mithilfe der Spalten log_reuse_wait und log_reuse_wait_desc der sys.database-Katalogsicht können Sie feststellen, wodurch eine Protokollkürzung verhindert wurde. Weitere Informationen finden Sie unter sys.databases (Transact-SQL). Eine Beschreibung von Faktoren, die eine Protokollkürzung verzögern können, finden Sie unter Das Transaktionsprotokoll (SQL Server).
Wichtig
Wenn sich die Datenbank zu dem Zeitpunkt, als der Fehler 9002 auftrat, gerade im Wiederherstellungsmodus befand, müssen Sie nach Behebung des Problems die Datenbank mithilfe von ALTER DATABASE database_name SET ONLINE wiederherstellen.
Alternativ sind als Reaktion auf ein volles Transaktionsprotokoll auch folgende Aktionen möglich:
Sichern des Protokolls.
Freigeben von Speicherplatz, damit das Protokoll automatisch vergrößert werden kann.
Verschieben der Protokolldatei auf einen Datenträger mit ausreichendem Speicherplatz.
Vergrößern einer Protokolldatei.
Hinzufügen einer Protokolldatei auf einem anderen Datenträger.
Abschließen oder Abbrechen einer Transaktion mit langer Ausführungszeit.
Diese Alternativen werden in den folgenden Abschnitten erläutert. Wählen Sie diejenige Aktion aus, die sich am besten für Ihre Situation eignet.
Sichern des Protokolls
Falls bei Verwendung des vollständigen oder massenprotokollierten Wiederherstellungsmodells das Transaktionsprotokoll nicht vor kurzem gesichert wurde, kann durch die Sicherung eine Protokollkürzung verhindert werden. Wenn das Protokoll zuvor noch nicht gesichert wurde, müssen Sie zwei Protokollsicherungen erstellen, damit das Protokoll von der Datenbank-Engine bis zu dem Punkt abgeschnitten werden kann, an dem die letzte Sicherung erfolgt ist. Durch Kürzen des Protokolls wird Speicherplatz für neue Protokolldatensätze freigegeben. Sichern Sie das Protokoll in kürzeren Abständen, damit es nicht wieder so schnell aufgefüllt wird.
So erstellen Sie eine Transaktionsprotokollsicherung
Wichtig
Wenn die Datenbank beschädigt ist, finden Sie entsprechende Informationen unter Protokollfragmentsicherungen (SQL Server).
Freigeben von Speicherplatz
Möglicherweise können Sie durch Löschen oder Verschieben anderer Dateien Speicherplatz auf dem Datenträger freigeben, das die Transaktionsprotokolldatei für die Datenbank enthält. Aufgrund des freigegebenen Speicherplatzes kann die Protokolldatei dann durch den Wiederherstellungsmechanismus automatisch vergrößert werden.
Verschieben der Protokolldatei auf einen anderen Datenträger
Wenn Sie auf dem Datenträger, auf dem die Protokolldatei aktuell gespeichert ist, nicht genügend Speicherplatz freigeben können, können Sie die Datei auf einen anderen Datenträger mit ausreichendem Speicherplatz verschieben.
Wichtig
Protokolldateien sollten unter keinen Umständen in komprimierten Dateisystemen gespeichert werden.
So verschieben Sie eine Protokolldatei
Vergrößern einer Protokolldatei
Wenn auf dem Protokolldatenträger Speicherplatz vorhanden ist, können Sie die Protokolldatei vergrößern. Die maximale Größe für Protokolldateien beträgt zwei Terabyte (TB) pro Protokolldatei.
So erhöhen Sie die Dateigröße
Wenn die automatische Vergrößerung deaktiviert ist, die Datenbank online ist und auf dem Datenträger ausreichend Speicherplatz verfügbar ist, führen Sie einen der folgenden Schritte aus:
Erhöhen Sie die Dateigröße manuell, um die Datei einmalig um einen bestimmten Wert zu vergrößern.
Aktivieren Sie die automatische Vergrößerung, indem Sie mit der ALTER DATABASE-Anweisung für die Option FILEGROWTH ein Vergrößerungsinkrement ungleich Null festlegen.
Hinweis
Erhöhen Sie in beiden Fällen den MAXSIZE-Wert, wenn die aktuelle Größenbeschränkung erreicht wurde.
Hinzufügen einer Protokolldatei auf einem anderen Datenträger
Fügen Sie der Datenbank auf einem anderen Datenträger eine neue Protokolldatei hinzu, die über ausreichend Speicherplatz verfügt, indem Sie ALTER DATABASE <database_name> ADD LOG FILE verwenden.
So fügen Sie eine Protokolldatei hinzu
Weitere Informationen
ALTER DATABASE (Transact-SQL)
Verwalten der Größe der Transaktionsprotokolldatei
Transaktionsprotokollsicherungen (SQL Server)
sp_add_log_file_recover_suspect_db (Transact-SQL)