Das Transaktionslog für die Datenbank ist voll. Informationen darüber, warum der Speicherbereich im Protokoll nicht wiederverwendet werden kann, finden Sie in der Spalte log_reuse_wait_desc in sys.databases. Bitte helfen Sie mir, dieses Problem zu lösen. Vielen Dank im Voraus.Das Transaktionslog für Datenbank 'Datenbankname' ist voll.
Antwort
Die wahrscheinlichste Antwort ist, dass Sie Protokollsicherungen oder gibt es eine offene Transaktion ausführen müssen.
Hier ist ein wenig mehr um Ihnen zu helfen ...
Führen Sie dieses Skript auf dem Server:
-- last FULL backup
;with FULLBUs
as (
select d.name, max(b.backup_finish_date) as 'Last FULL Backup'
from sys.databases d
join msdb.dbo.backupset b
on d.name = b.database_name
where b.type = 'D'
group by d.name
),
-- last LOG backup for FULL and BULK_LOGGED databases
LOGBUs
as (
select d.name, max(b.backup_finish_date) as 'Last LOG Backup'
from sys.databases d
join msdb.dbo.backupset b
on d.name = b.database_name
where d.recovery_model_desc <> 'SIMPLE'
and b.type = 'L'
group by d.name
)
-- general overview of databases, recovery model, and what is filling the log, last FULL, last LOG
select d.name, d.state_desc, d.recovery_model_desc, d.log_reuse_wait_desc, f.[Last FULL Backup], l.[Last LOG Backup]
from sys.databases d
left outer join FULLBUs f
on d.name = f.name
left outer join LOGBUs l
on d.name = l.name
where d.name not in ('model', 'TempDB')
order by d.name
Diese Abfrage wird Ihnen eine grobe Übersicht über Ihre Datenbanken, welche Wiederherstellungsmodell sie sind Verwenden, warum das Protokoll voll ist und wann die letzten FULL- und LOG-Sicherungen ausgeführt wurden.
Betrachten Sie die Spalte mit der Bezeichnung log_reuse_wait_description. Höchstwahrscheinlich sagt es BACKUP. Nächste wahrscheinlichste Ursache ist TRANSACTION.
Wenn es BACKUP hier einige Informationen:
Grundsätzlich für einfache Datenbanken, jeden Tag eine vollständige Sicherung ausführen. Führen Sie für Ihre FULL-Datenbanken jeden Tag eine FULL-Sicherung und jede Stunde eine LOG-Sicherung aus. Passen Sie die Häufigkeit Ihrer LOG-Datenbanken an Ihre Fähigkeit an, Daten zu verlieren, während Sie Ihren Job behalten.
Die einfachste Möglichkeit zur Verwaltung Ihrer Sicherungen ist die Verwendung von Ola Hallengren's maintenance scripts. Besuchen Sie seine Website und versuchen Sie sie zu verwenden.
Wenn Sie TRANSACTION als Grund sehen, versuchen Sie laufen:
dbcc opentran
Und die Spur zu kommen, wer ist es, die offenen Transaktionen hat.
Sehr hilfreich, danke! –
Alle von mir sagen entweder "NOTHING" oder "CHECKPOINT" in der Spalte log_reuse_wait_description. –
Zweifellos führen Sie die Datenbank unter Full Recovery Mode
aus und konnten keine Transaktionsprotokollsicherungen durchführen.
Klicken Sie mit der rechten Maustaste auf Ihre Datenbank im SQL Server-Manager und überprüfen Sie die Seite Optionen. Wechseln Sie das Wiederherstellungsmodell von Full
zu Simple
und klicken Sie dann erneut mit der rechten Maustaste auf die Datenbank. Wählen Sie Tasks
Shrink
, Files
. Schrumpfen Sie die Protokolldatei auf eine geeignete Größe (ich halte im Allgemeinen 20-25% der Größe der Datendateien).
Wechseln Sie zurück zu Full Recovery Model
, und nehmen Sie sofort eine vollständige Datenbanksicherung vor.
Jetzt müssen Sie herausfinden, ob Sie die Datenbank zu einem Zeitpunkt wiederherstellen müssen. Wenn dies der Fall ist, planen Sie regelmäßige Transaktionsprotokolle und möglicherweise differenzielle Sicherungen gemäß den Anforderungen Ihres Unternehmens ein.
Wenn das Unternehmen mit einem gewissen Datenverlust leben kann, planen Sie vollständige Sicherungen und wechseln Sie in den Modus Simple
.
Zwischen dieser Antwort und @ Steven Antwort, einige gute Infos! –
Klicken Sie mit der rechten Maustaste auf die Datenbank \ Properties \ Files.
Sie haben eine Tabelle mit den Datenbankdateien, darunter eine Protokolldatei. Erweitern Sie einfach die Anfangsgröße auf einen angemessenen Betrag.
Tun Sie dies Klicken Sie mit der rechten Maustaste auf den Datenbankknoten -> Aufgaben-> Sichern-> Allgemein (in der Registerkarte) -> legen Sie "Sicherungstyp" auf "Transaktionsprotokoll" -> OK.
Wenn das Datenbankwiederherstellungsmodell voll ist und Sie keinen Wartungsplan für die Protokollsicherung haben, erhalten Sie diesen Fehler, weil das Transaktionsprotokoll aufgrund von LOG_BACKUP
voll wird.
Dies wird verhindern, dass Sie eine Aktion für diese Datenbank wie eine Verkleinerung ausführen, und die SQL Server-Datenbankmodul wird einen Fehler 9002 auslösen.
, um dieses Verhalten zu überwinden, rate ich Ihnen, diese The transaction log for database ‘SharePoint_Config’ is full due to LOG_BACKUP, die detaillierte Schritte zeigen, um dieses Problem zu beheben, wie Protokollsicherung Wartungsplan zu überprüfen.
Anstatt zu schreiben, wo die Antwort (im Link) zu finden ist, sollten Sie diese Informationen für diese Frage destillieren. Bitte lesen Sie [Wie schreibe ich eine gute Antwort?] (/ Help/how-to-answer) und [How to referenz material von anderen geschrieben] (/ help/referenzing) für einige Richtlinien. Nur-Link-Antworten werden in StackOverflow als qualitativ minderwertige Antworten betrachtet und können gelöscht werden. –
- 1. Das Transaktionslog für die Datenbank ist voll
- 2. TF30042: Die Datenbank ist voll
- 3. Was ist ein gültiger PostgreSQL-Datenbankname?
- 4. Abfrage Transaktionslog in Postgresql
- 5. Datenbankname aus DDL-Trigger abrufen
- 6. SQLiteFullException: Datenbank oder Festplatte ist voll (Code 13) GreenDao
- 7. Die Ereignisprotokolldatei ist voll
- 8. CodeCahe ist voll Java7
- 9. iphone sdk - warum ist das video nicht voll res zurückgegeben?
- 10. Wie Datenbankname aus Verbindungszeichenfolge mit SqlConnectionStringBuilder
- 11. Kanalspeicher ist beim Start voll
- 12. Panel Überschrift ist nicht voll
- 13. Android: Cursor Fenster voll ist
- 14. mod_rewrite ist nicht voll funktionsfähiges
- 15. PostgreSQL JDBC URL mit Datenbankname enthält Schrägstrich
- 16. mySQL temporäre Tabelle ist voll
- 17. mysqldump Qualifiziert vollständig Trigger mit Datenbankname
- 18. CouchDB _replicator-Datenbank erfordert ein Kennwort für das lokale Ziel?
- 19. SQL Server-Fehler: Primärer Dateigruppe ist voll
- 20. Sql Server - Log ist voll durch ACTIVE_TRANSACTION
- 21. Sybase iAnywhere.Data.SQLAnywhere.SAException: DSN-Datenbankname existiert nicht
- 22. Wie verschiebe ich das Transaktionsprotokoll für eine Datenbank mit sqlcmd/Befehlszeile?
- 23. SocketAsyncEventArgs Puffer ist voll von Nullen
- 24. Was ist das beste Datenbank-Design für tausend Zeilen
- 25. Das Protokoll für Datenbank „x“ ist nicht verfügbar
- 26. Datenbankname nach Unterstrich in der Verbindungszeichenfolge wird ignoriert
- 27. Golang - Wie ein gepufferter Kanal ist voll
- 28. ThreadPoolExecutor blockieren, wenn die Warteschlange voll ist?
- 29. Erstellen einer neuen Datenbank mit PHP/PDO mit einer Variablen als Datenbankname
- 30. Erkennen, dass der Stapel voll ist
Haben Sie den Hinweis in der Fehlermeldung befolgt? Was hast du dort gefunden? Welche Untersuchungen haben Sie an diesem Punkt durchgeführt? –
Gibt es tatsächlich keinen Datenbanknamen in der Nachricht? – egrunin
Versuchen Sie, MSDN: [Ein Transaktionsprotokoll wird unerwartet vergrößert oder in SQL Server wird voll] (http://support.microsoft.com/kb/317375) Es hat eine ziemlich vollständige Erklärung des Problems. – egrunin