sql >> Base de Datos >  >> RDS >> Sqlserver

Corrección:"La instrucción BACKUP LOG no está permitida mientras el modelo de recuperación sea SIMPLE" en SQL Server (y SQL Edge)

Si obtiene un error que dice La declaración BACKUP LOG no está permitida mientras el modelo de recuperación sea SIMPLE cuando intenta realizar una copia de seguridad de una base de datos en SQL Server o Azure SQL Edge, es porque está intentando realizar una copia de seguridad de los registros de transacciones en una base de datos que utiliza el modelo de recuperación simple.

Para solucionar esto, cambie el modelo de recuperación a registro completo o masivo.

El Error

Este es un ejemplo de código T-SQL que genera el error:

BACKUP LOG Music 
TO DISK = '/var/opt/mssql/backups/Music.trn';

Resultado:

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

Como se mencionó, el error se produce cuando intenta realizar una copia de seguridad de los registros de transacciones en una base de datos que utiliza el modelo de recuperación simple.

El modelo de recuperación simple no admite copias de seguridad de registros.

La solución

Para solucionar este problema, establezca el modelo de recuperación de la base de datos en FULL o BULK_LOGGED :

USE master;  
ALTER DATABASE Music 
SET RECOVERY FULL;

Ese ejemplo puso la base de datos en modo de recuperación completa.

Sin embargo, también deberá realizar al menos una copia de seguridad completa de la base de datos antes de comenzar a realizar una copia de seguridad de sus registros de transacciones. Si no hace esto, obtendrá el error 4214, que indica que El REGISTRO DE RESPALDO no se puede realizar porque no hay una copia de seguridad de la base de datos actual .

Este es un ejemplo de cómo realizar una copia de seguridad completa de la base de datos:

BACKUP DATABASE Music 
    TO DISK = '/var/opt/mssql/backups/Music.bak' 
    WITH FORMAT;

Ahora se pueden realizar copias de seguridad de los registros de transacciones según sea necesario:

BACKUP LOG Music 
TO DISK = '/var/opt/mssql/backups/Music.trn';

Resultado:

Processed 3 pages for database 'Music', file 'Music_log' on file 1.

¿Utiliza Azure SQL Edge?

Si usa Azure SQL Edge, es posible que este problema ocurra con frecuencia. Probablemente se deba a que las bases de datos creadas con SQL Edge utilizan el modelo de recuperación simple de forma predeterminada. Y eso es porque el model la base de datos utiliza el modelo de recuperación simple.

Siempre puede cambiar el modelo de recuperación en el model base de datos a FULL , lo que hará que las bases de datos posteriores utilicen el modo de recuperación completa de forma predeterminada.