Se ricevi un errore che dice L'istruzione BACKUP LOG non è consentita mentre il modello di ripristino è SEMPLICE quando si tenta di eseguire il backup di un database in SQL Server o Azure SQL Edge, è perché si tenta di eseguire il backup dei registri delle transazioni su un database che utilizza il modello di ripristino semplice.
Per risolvere il problema, cambia il modello di recupero in registrazione completa o in blocco.
L'errore
Ecco un esempio di codice T-SQL che genera l'errore:
BACKUP LOG Music
TO DISK = '/var/opt/mssql/backups/Music.trn';
Risultato:
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.
La causa
Come accennato, l'errore si verifica quando si tenta di eseguire il backup dei registri delle transazioni su un database che utilizza il modello di ripristino semplice.
Il modello di ripristino semplice non supporta i backup dei log.
La soluzione
Per superare questo problema, imposta il modello di ripristino del database su FULL
o BULK_LOGGED
:
USE master;
ALTER DATABASE Music
SET RECOVERY FULL;
Quell'esempio imposta il database in modalità di ripristino completo.
Tuttavia, dovrai anche eseguire almeno un backup completo del database prima di iniziare a eseguire il backup dei registri delle transazioni. In caso contrario, verrà visualizzato l'errore 4214, che afferma che Non è possibile eseguire il BACKUP LOG perché non esiste un backup del database corrente .
Ecco un esempio di esecuzione di un backup completo del database:
BACKUP DATABASE Music
TO DISK = '/var/opt/mssql/backups/Music.bak'
WITH FORMAT;
Ora è possibile eseguire il backup dei registri delle transazioni come richiesto:
BACKUP LOG Music
TO DISK = '/var/opt/mssql/backups/Music.trn';
Risultato:
Processed 3 pages for database 'Music', file 'Music_log' on file 1.
Uso di Azure SQL Edge?
Se usi Azure SQL Edge, potresti scoprire che questo problema si verifica spesso. Ciò è probabilmente dovuto al fatto che i database creati con SQL Edge utilizzano il modello di ripristino semplice per impostazione predefinita. E questo perché il model
database utilizza il modello di ripristino semplice.
Puoi sempre modificare il modello di ripristino su model
database su FULL
, che comporterà che i database successivi utilizzino la modalità di ripristino completo per impostazione predefinita.