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

Correzione:"L'istruzione BACKUP LOG non è consentita mentre il modello di ripristino è SEMPLICE" in SQL Server (e SQL Edge)

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.