sql >> Database teknologi >  >> RDS >> Sqlserver

Fix:"Sætningen BACKUP LOG er ikke tilladt, mens gendannelsesmodellen er SIMPLE" i SQL Server (og SQL Edge)

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.


  1. Oprettelse af timer i Oracle Forms / Forms 6i og visning af et ur

  2. Er GUID-kollisioner mulige?

  3. Alt du behøver at vide om LIKE Operator i SQL

  4. Forskellen mellem sys.sql_modules, sys.system_sql_modules og sys.all_sql_modules i SQL Server