Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Behebung:„Die Anweisung BACKUP LOG ist nicht zulässig, solange das Wiederherstellungsmodell SIMPLE ist“ in SQL Server (und SQL Edge)

Wenn Sie eine Fehlermeldung erhalten, die lautet:Die Anweisung BACKUP LOG ist nicht zulässig, während das Wiederherstellungsmodell SIMPLE ist Wenn Sie versuchen, eine Datenbank in SQL Server oder Azure SQL Edge zu sichern, liegt das daran, dass Sie versuchen, die Transaktionsprotokolle in einer Datenbank zu sichern, die das einfache Wiederherstellungsmodell verwendet.

Um dies zu beheben, ändern Sie das Wiederherstellungsmodell entweder in vollständige oder Massenprotokollierung.

Der Fehler

Hier ist ein Beispiel für T-SQL-Code, der zu dem Fehler führt:

BACKUP LOG Music 
TO DISK = '/var/opt/mssql/backups/Music.trn';

Ergebnis:

Msg 4208, Level 16, State 1, Line 1
The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.

Die Ursache

Wie bereits erwähnt, wird der Fehler verursacht, wenn Sie versuchen, die Transaktionsprotokolle auf einer Datenbank zu sichern, die das einfache Wiederherstellungsmodell verwendet.

Das einfache Wiederherstellungsmodell unterstützt keine Protokollsicherungen.

Die Lösung

Um dieses Problem zu umgehen, setzen Sie das Datenbankwiederherstellungsmodell entweder auf FULL oder BULK_LOGGED :

USE master;  
ALTER DATABASE Music 
SET RECOVERY FULL;

Dieses Beispiel versetzte die Datenbank in den vollständigen Wiederherstellungsmodus.

Sie müssen jedoch auch mindestens eine vollständige Datenbanksicherung durchführen, bevor Sie mit der Sicherung Ihrer Transaktionsprotokolle beginnen. Wenn Sie dies nicht tun, erhalten Sie Fehler 4214, der besagt, dass BACKUP LOG nicht durchgeführt werden kann, da keine aktuelle Datenbanksicherung vorhanden ist .

Hier ist ein Beispiel für die Durchführung einer vollständigen Datenbanksicherung:

BACKUP DATABASE Music 
    TO DISK = '/var/opt/mssql/backups/Music.bak' 
    WITH FORMAT;

Jetzt können die Transaktionsprotokolle nach Bedarf gesichert werden:

BACKUP LOG Music 
TO DISK = '/var/opt/mssql/backups/Music.trn';

Ergebnis:

Processed 3 pages for database 'Music', file 'Music_log' on file 1.

Sie verwenden Azure SQL Edge?

Wenn Sie Azure SQL Edge verwenden, tritt dieses Problem möglicherweise häufig auf. Das liegt wahrscheinlich daran, dass mit SQL Edge erstellte Datenbanken standardmäßig das einfache Wiederherstellungsmodell verwenden. Und das liegt daran, dass das model Datenbank verwendet das einfache Wiederherstellungsmodell.

Sie können das Wiederherstellungsmodell jederzeit im model ändern Datenbank auf FULL , was dazu führt, dass nachfolgende Datenbanken standardmäßig den vollständigen Wiederherstellungsmodus verwenden.