Como usuario de SQL Server, es posible que te encuentres en situaciones en las que necesites administrar tus archivos de registro de manera efectiva. En esta publicación del blog, discutiremos los conceptos de SHRINKFILE y TRUNCATE en SQL Server y entenderemos las implicaciones de su uso.
Recientemente, recibí un correo electrónico de un lector que estaba enfrentando problemas con un trabajo que falló debido al uso del fragmento de código a continuación:
DBCC SHRINKFILE (TestDBLog, 1)
BACKUP LOG TestDB WITH TRUNCATE_ONLY
DBCC SHRINKFILE (TestDBLog, 1)
El lector había actualizado a SQL Server 2008 y se encontró con el mensaje de error “Msg 155, Level 15, State 1, Line 1 ‘TRUNCATE_ONLY’ no es una opción de respaldo reconocida”.
Después de analizar el código, sugerí las siguientes modificaciones:
USE [master]
GO
ALTER DATABASE [TestDb] SET RECOVERY SIMPLE WITH NO_WAIT
DBCC SHRINKFILE (TestDbLog, 1)
ALTER DATABASE [TestDb] SET RECOVERY FULL WITH NO_WAIT
GO
Sin embargo, también resalté dos problemas principales con el código original:
- Al cambiar el modelo de recuperación de la base de datos a simple, reducir el archivo y luego establecerlo nuevamente en recuperación completa, se pierden datos de registro valiosos y la restauración en un punto específico en el tiempo se vuelve imposible. Además, no se pueden utilizar archivos de registro posteriores.
- Reducir el tamaño de un archivo de base de datos o de la base de datos misma introduce fragmentación.
Para abordar estos problemas, recomendé realizar copias de seguridad de registro adecuadas utilizando el siguiente comando:
BACKUP LOG [TestDb] TO DISK = N'C:\Backup\TestDb.bak'
GO
Al realizar copias de seguridad regulares del registro, el tamaño del archivo de registro generalmente se administra correctamente y no crece excesivamente.
Es importante tener en cuenta que esta publicación del blog solo rasca la superficie de este tema. Para obtener un conocimiento más profundo, sugiero leer las publicaciones de Paul Randal aquí y aquí, así como la publicación de Brent Ozar aquí.
Si tienes alguna pregunta adicional o necesitas ayuda, no dudes en contactarme al [número de teléfono].
Gracias por leer y espero tus comentarios y sugerencias.
Saludos cordiales,
Pinal Dave