Tengo un sitio web Asp.Net MVC 5 con el enfoque de código de EntityFramework en un plan de alojamiento compartido. Utiliza el WebbsitePanel de código abierto para el panel de control y su panel de SQL Server es algo limitado. Hoy, cuando quería editar la base de datos, encontré este error:
The transaction log for database 'db_name' is full due to 'LOG_BACKUP'
Busqué y encontré muchas respuestas relacionadas como esta y esta o esta, pero el problema es que sugieren ejecutar una consulta en la base de datos. Intenté correr
db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;");
con el estudio visual (en el HomeController
) pero aparece el siguiente error:
System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction.
¿Cómo puedo solucionar mi problema? ¿Debo contactar al equipo de soporte (que es un poco pobre para mi anfitrión) o puedo resolver esto yo mismo?
asp.net
sql-server
asp.net-mvc
database
Alireza Noori
fuente
fuente
Respuestas:
Llame a su empresa de alojamiento y pídales que configuren copias de seguridad de registros regulares o configure el modelo de recuperación en simple. Estoy seguro de que sabe qué informa la elección, pero seré explícito de todos modos. Configure el modelo de recuperación como completo si necesita la capacidad de restaurar a un punto arbitrario en el tiempo. De cualquier manera, la base de datos está mal configurada.
fuente
shrink
en la base de datos. Además, no necesitaba la recuperación, así que les dije que lo pusieran enSIMPLE
modo.Además de la respuesta de Ben, puede probar las siguientes consultas según sus necesidades
USE {database-name}; GO -- Truncate the log by changing the database recovery model to SIMPLE. ALTER DATABASE {database-name} SET RECOVERY SIMPLE; GO -- Shrink the truncated log file to 1 MB. DBCC SHRINKFILE ({database-file-name}, 1); GO -- Reset the database recovery model. ALTER DATABASE {database-name} SET RECOVERY FULL; GO
Actualizar crédito @ cema-sp
Para encontrar los nombres de los archivos de la base de datos, utilice la siguiente consulta
select * from sys.database_files;
fuente
select * from sys.database_files;
name
columna, para la fila del registro, de esta consulta:select * from sys.database_files
Ocasionalmente, cuando un disco se queda sin espacio, el mensaje "el registro de transacciones de la base de datos XXXXXXXXXX está lleno debido a 'LOG_BACKUP'" se devolverá cuando falle una instrucción SQL de actualización. Compruebe su espacio en disco :)
fuente
Este error se produce porque el registro de transacciones se llena debido a LOG_BACKUP. Por lo tanto, no puede realizar ninguna acción en esta base de datos y, en este caso, el motor de base de datos de SQL Server generará un error 9002.
Para resolver este problema, debe hacer lo siguiente
Escribí un artículo con todos los detalles sobre este error y cómo resolverlo en El registro de transacciones de la base de datos 'SharePoint_Config' está lleno debido a LOG_BACKUP
fuente
Recibí el mismo error pero de un trabajo de backend (trabajo de SSIS). Al verificar la configuración de crecimiento del archivo de registro de la base de datos, el archivo de registro tenía un crecimiento limitado de 1 GB. Entonces, lo que sucedió es cuando el trabajo se ejecutó y le pidió al servidor SQL que asignara más espacio de registro, pero el límite de crecimiento del registro disminuyó causó que el trabajo fallara. Modifiqué el crecimiento del registro y lo configuré para que creciera en 50 MB y Crecimiento ilimitado y el error desapareció.
fuente
Esto también puede suceder cuando el archivo de registro tiene un tamaño limitado.
Haga clic derecho en la base de datos en el Explorador de objetos
Seleccionar propiedades
Selecciona archivos
En la línea de registro, haga clic en los puntos suspensivos en la columna Crecimiento automático / Tamaño máximo
Cambiar / verificar que el tamaño máximo de archivo sea ilimitado.
Después de cambiar a ilimitado, la base de datos volvió a la vida.
fuente