Hvis du får en fejlmeddelelse, der lyder Sætningen BACKUP LOG er ikke tilladt, mens gendannelsesmodellen er SIMPLE når du forsøger at sikkerhedskopiere en database i SQL Server eller Azure SQL Edge, er det fordi du forsøger at sikkerhedskopiere transaktionslogfilerne på en database, der bruger den simple gendannelsesmodel.
For at løse dette skal du ændre gendannelsesmodellen til enten fuld- eller masselogning.
Fejlen
Her er et eksempel på T-SQL-kode, der resulterer i fejlen:
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.
Årsagen
Som nævnt opstår fejlen, når du forsøger at sikkerhedskopiere transaktionsloggene på en database, der bruger den simple gendannelsesmodel.
Den simple gendannelsesmodel understøtter ikke log backups.
Løsningen
For at løse dette problem skal du indstille databasegendannelsesmodellen til enten FULL
eller BULK_LOGGED
:
USE master;
ALTER DATABASE Music
SET RECOVERY FULL;
Dette eksempel satte databasen til fuld gendannelsestilstand.
Du skal dog også udføre mindst én komplet databasesikkerhedskopiering, før du begynder at sikkerhedskopiere dine transaktionslogfiler. Hvis du ikke gør dette, får du fejl 4214, som siger, at BACKUP LOG kan ikke udføres, fordi der ikke er nogen aktuel database backup .
Her er et eksempel på udførelse af en komplet databasesikkerhedskopiering:
BACKUP DATABASE Music
TO DISK = '/var/opt/mssql/backups/Music.bak'
WITH FORMAT;
Nu kan transaktionsloggene sikkerhedskopieres 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.
Bruger du Azure SQL Edge?
Hvis du bruger Azure SQL Edge, kan du opleve, at dette problem sker meget. Det er sandsynligvis fordi databaser oprettet med SQL Edge bruger den simple gendannelsesmodel som standard. Og det er fordi model
databasen bruger den simple gendannelsesmodel.
Du kan altid ændre gendannelsesmodellen på model
database til FULL
, hvilket vil resultere i, at efterfølgende databaser bruger fuld gendannelsestilstand som standard.