Ich teste, wie bestimmte Vorgänge unter verschiedenen Wiederherstellungsmodellen protokolliert werden. Nachfolgend sind die Schritte aufgeführt, die ich bisher ausgeführt habe
1. Datenbank im vollständigen Wiederherstellungsmodell
erstellen 2. Sicherung durchführen
3. Tabelle erstellen und 10 Millionen Datensätze
einfügen 4. Protokollsicherung durchführen, VLF-Anzahl überprüfen und Prozentsatz des freien Protokollspeicherplatzes
anzeigen 5. Jetzt eine Indexwiederherstellung durchführen und die mit generierten Datensätze anzeigen fn_dblog Funktion
6. Jetzt habe ich auf das Massenwiederherstellungsmodell umgestellt.
7. Eine Sicherung durchgeführt.
8. Eine Protokollsicherung durchgeführt.
9. Eine Indexwiederherstellung durchgeführt
Seltsamerweise schlägt die Indexwiederherstellung mit dem folgenden Fehler fehl.
Die Anweisung wurde beendet. Meldung 9002, Ebene 17, Status 2, Zeile 1 Das Transaktionsprotokoll für die Datenbank 'Bulklogging' ist aufgrund von 'LOG_BACKUP' voll.
das stimmt eigentlich nicht
Das automatische Wachstum des 1.log-Speicherplatzes ist nicht eingeschränkt
2. Platz auf dem Speicherort der Protokolldatei
Kann mir jemand helfen zu verstehen, warum ich über den Fehler hinausgehe, obwohl Platz vorhanden ist und das automatische Wachstum nicht eingeschränkt ist
Hinzufügen eines Bildes mit Indexgröße.
Das Problem wurde behoben, aber nicht sicher, wie diese Änderung den Unterschied ausmachte. Alle Hinweise wären sehr willkommen.
Kommentar sagt zwei lange - also hier posten ...
Ich habe den Index erneut ausgeschrieben, nachdem ich das Wiederherstellungsmodell geändert hatte, und dann hat es funktioniert. Darüber hinaus wurde der geskriptete Index vor und nach genau gleich geblieben, nur die Sitzung wurde geändert. Aber ich bin nicht sicher, wie dies funktioniert hat.
Vor :
USE [bulklogging]
GO
ALTER INDEX [PK__bcc__3213E83FAC9DB5ED] ON [dbo].[bcc]
REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
Nach:
USE [bulklogging]
GO
ALTER INDEX [PK__bcc__3213E83FAC9DB5ED] ON [dbo].[bcc]
REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
Update zum Schließen dieser Frage:
Ich verwende Fn_dblog, um Protokolldatensätze zu überprüfen. Dies scheint einen versteckten Fehler zu haben, wie hier beschrieben , der mein Protokollwachstum beeinflussen kann.
Edit 15.08.13: Vorsicht - Jonathan hat gerade von einem Kundensystem erfahren, das dies ausgiebig nutzt, dass jedes Mal, wenn fn_dump_dblog aufgerufen wird, ein neuer versteckter SQLOS-Scheduler und bis zu drei Threads erstellt werden, die nicht verschwinden (und nicht verschwinden) wiederverwendet werden), bis ein Server neu gestartet wird. Es ist ein Fehler, den das SQL-Team beheben wird, nachdem wir sie darauf aufmerksam gemacht haben. Mit Vorsicht verwenden.
Bearbeiten 15.05.15: Es wurde in SQL Server 2012 SP2 + und SQL Server 2014 behoben. Das Update wird nicht früher zurückportiert.
quelle
Antworten:
Dieser Fehler tritt auf, weil das Transaktionsprotokoll aufgrund von voll wird
LOG_BACKUP
. Daher können Sie für diese Datenbank keine Aktion ausführen. In diesem FallUm dieses Problem zu lösen, müssen Sie Folgendes tun:
Es wird daher empfohlen, vor der Inbetriebnahme den LOG_BACKUP-Wartungsplan vorzubereiten , um die Protokolldatei häufig zu sichern und den Verkleinerungsvorgang in der Produktion zu vermeiden.
Hoffe das hilft dir
quelle
Ich bin heute mit einer meiner Produktionsdatenbanken auf dieses Problem gestoßen. Ich habe es behoben, indem ich der Datenbank eine zweite Protokolldatei hinzugefügt habe. Ich konnte keine vollständige Sicherung durchführen oder die Protokolldatei nicht wie oben beschrieben verkleinern, da beim Versuch die
LOG_BACKUP
Fehlermeldung generiert würde . Ich habe auch versucht, die Protokolldatei zu erweitern, aber auch dies hat den gleichen Fehler generiert. Am Ende machte das Hinzufügen einer zweiten kleineren Protokolldatei die Datenbank wieder verwendbar. Danach konnte ich die Datenbank sichern und die Größe des ursprünglichen Protokolls ändern.quelle