sql >> Databasteknik >  >> RDS >> Sqlserver

Fix:"Satsen BACKUP LOG är inte tillåten medan återställningsmodellen är SIMPLE" i SQL Server (och SQL Edge)

Om du får ett felmeddelande som lyder Utsatsen BACKUP LOG är inte tillåten medan återställningsmodellen är ENKEL när du försöker säkerhetskopiera en databas i SQL Server eller Azure SQL Edge beror det på att du försöker säkerhetskopiera transaktionsloggarna på en databas som använder den enkla återställningsmodellen.

För att åtgärda detta, ändra återställningsmodellen till antingen full- eller massloggning.

Felet

Här är ett exempel på T-SQL-kod som resulterar i felet:

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

Resultat:

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.

Orsaken

Som nämnts orsakas felet när du försöker säkerhetskopiera transaktionsloggarna på en databas som använder den enkla återställningsmodellen.

Den enkla återställningsmodellen stöder inte loggsäkerhetskopior.

Lösningen

För att lösa detta problem, ställ in databasåterställningsmodellen till antingen FULL eller BULK_LOGGED :

USE master;  
ALTER DATABASE Music 
SET RECOVERY FULL;

Det exemplet ställde in databasen till fullständigt återställningsläge.

Du måste dock också göra minst en fullständig säkerhetskopiering av databasen innan du börjar säkerhetskopiera dina transaktionsloggar. Om du inte gör detta får du fel 4214, som säger att BACKUP LOGG kan inte utföras eftersom det inte finns någon aktuell databasbackup .

Här är ett exempel på hur du utför en fullständig säkerhetskopiering av databas:

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

Nu kan transaktionsloggarna säkerhetskopieras efter behov:

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

Resultat:

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

Använder du Azure SQL Edge?

Om du använder Azure SQL Edge kanske du upptäcker att det här problemet händer mycket. Det beror förmodligen på att databaser skapade med SQL Edge använder den enkla återställningsmodellen som standard. Och det beror på att model databasen använder den enkla återställningsmodellen.

Du kan alltid ändra återställningsmodellen på model databas till FULL , vilket kommer att resultera i att efterföljande databaser använder fullständigt återställningsläge som standard.


  1. MySQL 'user_id' där klausulen är ett tvetydigt problem

  2. Hur kör man en lagrad procedur varje dag i SQL Server Express Edition?

  3. Hur kan jag bekräfta att en databas är Oracle och vilken version använder den SQL?

  4. Kan inte ansluta till MySQL från Java:NullPointerException inuti MySQL-drivrutinanslutningslogiken