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, wird von SQL Server Database Engine (Datenbankmodul) der Fehler 9002 ausgegeben. Das Protokoll kann sich füllen, wenn die Datenbank online ist oder wiederhergestellt wird. Wenn das Protokoll gefüllt wird, während die Datenbank online ist, bleibt die Datenbank online, sie kann aber nur gelesen und nicht aktualisiert werden. Wird das Protokoll während einer Wiederherstellung gefüllt, wird die Datenbank von Database Engine (Datenbankmodul) 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].

Wichtiger HinweisWichtig

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 noch nie gesichert wurde, müssen Sie zwei Protokollsicherungen erstellen, damit das Protokoll von Database Engine (Datenbankmodul) bis zu dem Punkt abgeschnitten werden kann, an dem die letzte Sicherung erfolgte. 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

Wichtiger HinweisWichtig

Wenn die Datenbank beschädigt ist, ziehen Sie den Abschnitt Protokollfragmentsicherungen (SQL Server) zu Rate.

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.

Wichtiger HinweisWichtig

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.

HinweisHinweis

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 mithilfe von ALTER DATABASE <database_name> ADD LOG FILE eine neue Protokolldatei auf einem anderen Datenträger hinzu, auf dem ausreichend Speicherplatz vorhanden ist.

So fügen Sie eine Protokolldatei hinzu

Siehe auch

Verweis

ALTER DATABASE (Transact-SQL)

sp_add_log_file_recover_suspect_db (Transact-SQL)

Konzepte

Verwalten der Größe der Transaktionsprotokolldatei

Transaktionsprotokollsicherungen (SQL Server)