Freigeben über


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)