¿Cómo trunco ​​el registro de transacciones en una base de datos de SQL Server 2008?

9

¿Cómo trunco ​​el registro de transacciones en una base de datos de SQL Server 2008?

¿Cuáles son las mejores formas posibles?

Intenté esto desde un blog de la siguiente manera:

1) Desde la configuración de la base de datos hasta la recuperación simple, reduciendo el archivo y una vez más configurando la recuperación completa, de hecho está perdiendo sus valiosos datos de registro y no podrá restaurar el punto en el tiempo. No solo eso, tampoco podrá utilizar archivos de registro posteriores.

2) La reducción del archivo de base de datos o la base de datos agrega fragmentación.

Hay muchas cosas que puedes hacer. Primero, comience a realizar una copia de seguridad de registro adecuada utilizando el siguiente comando en lugar de truncarlos y perderlos con frecuencia.

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

Elimina el código de SHRINKING del archivo. Si está realizando copias de seguridad de registro adecuadas, su archivo de registro por lo general (nuevamente, por lo general, se excluyen los casos especiales) no crece demasiado.

Neo
fuente
2
OK, ¿y qué pasó cuando lo intentaste?

Respuestas:

4

La forma más segura y correcta de truncar un archivo de registro si la base de datos está en modo de recuperación completa es hacer una copia de seguridad del registro de transacciones (sin TRUNCATE_ONLY. Esto será obsoleto en futuras versiones y no es aconsejable).

Parece que quiere reducir su archivo de registro después, en cuyo caso ejecutaría un DBCC SHRINKFILE(yourTLogName)comando. Hay un segundo parámetro opcional para el tamaño solicitado para reducirlo.

Thomas Stringer
fuente
8

Puede hacer una copia de seguridad del registro en el dispositivo nulo:

backup log [databasename] to disk = 'nul';

O bien, podría cambiar el modelo de recuperación a simple y luego volver a la carga completa / masiva nuevamente.

Max Vernon
fuente
Hice + uno en esto porque esta es una herramienta en la caja de herramientas de dbas y su respuesta no merece votos negativos, creo. Estoy de acuerdo con el sentimiento de que la mejor manera es tomar copias de seguridad del registro de transacciones, pero bueno, todas las buenas herramientas se pueden usar de manera correcta o incorrecta.
Martin Sjöberg
6

Si no le importan sus datos de registro y solo desea deshacerse de ellos:

Cambie el modelo de recuperación de completo a simple y luego de nuevo a completo. Reduzca el archivo usando DBCC SHRINKFILE con el argumento TRUNCATEONLY

El siguiente comando cambiará el modelo de recuperación de completo a simple

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

El siguiente comando cambiará el modelo de recuperación a completo

ALTER DATABASE <databse_name> SET RECOVERY FULL

Para encontrar el nombre del archivo de registro, puede usar la siguiente consulta

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

Reducir el archivo

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

Consulte ¿Cuál es el comando para truncar un archivo de registro de SQL Server? para más información sobre esto

Alex
fuente