Als u een foutmelding krijgt met de tekst De instructie BACKUP LOG is niet toegestaan terwijl het herstelmodel EENVOUDIG is wanneer u een back-up probeert te maken van een database in SQL Server of Azure SQL Edge, komt dit omdat u een back-up probeert te maken van de transactielogboeken in een database die het eenvoudige herstelmodel gebruikt.
Om dit op te lossen, wijzigt u het herstelmodel in volledige of bulkregistratie.
De fout
Hier is een voorbeeld van T-SQL-code die resulteert in de fout:
BACKUP LOG Music
TO DISK = '/var/opt/mssql/backups/Music.trn';
Resultaat:
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.
De oorzaak
Zoals vermeld, wordt de fout veroorzaakt wanneer u een back-up probeert te maken van de transactielogboeken in een database die het eenvoudige herstelmodel gebruikt.
Het eenvoudige herstelmodel ondersteunt geen back-ups van logbestanden.
De oplossing
Om dit probleem op te lossen, stelt u het databaseherstelmodel in op FULL
of BULK_LOGGED
:
USE master;
ALTER DATABASE Music
SET RECOVERY FULL;
Dat voorbeeld zette de database in de volledige herstelmodus.
U moet echter ook ten minste één volledige databaseback-up maken voordat u begint met het maken van een back-up van uw transactielogboeken. Als u dit niet doet, krijgt u fout 4214, waarin staat dat BACKUP LOG niet kan worden uitgevoerd omdat er geen huidige databaseback-up is .
Hier is een voorbeeld van het uitvoeren van een volledige databaseback-up:
BACKUP DATABASE Music
TO DISK = '/var/opt/mssql/backups/Music.bak'
WITH FORMAT;
Nu kan desgewenst een back-up worden gemaakt van de transactielogboeken:
BACKUP LOG Music
TO DISK = '/var/opt/mssql/backups/Music.trn';
Resultaat:
Processed 3 pages for database 'Music', file 'Music_log' on file 1.
Gebruik je Azure SQL Edge?
Als u Azure SQL Edge gebruikt, komt dit probleem mogelijk veel voor. Dat komt waarschijnlijk omdat databases die zijn gemaakt met SQL Edge standaard het eenvoudige herstelmodel gebruiken. En dat komt omdat het model
database gebruikt het eenvoudige herstelmodel.
U kunt het herstelmodel altijd wijzigen op het model
database naar FULL
, wat ertoe leidt dat volgende databases standaard de volledige herstelmodus gebruiken.