sql >> Database >  >> RDS >> Sqlserver

Fix:"De instructie BACKUP LOG is niet toegestaan ​​terwijl het herstelmodel EENVOUDIG is" in SQL Server (en SQL Edge)

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.


  1. Hoe weet ik of mijn Oracle-systeem is ingesteld om Unicode-tekens of multibyte-tekens te ondersteunen?

  2. Hoe een bestand van de ene map naar de andere te verplaatsen met behulp van PL SQL

  3. Databaseschema's gebruiken in SQL Server

  4. RegEx gebruiken in SQL Server