Pregunta

Cada mes hacemos una instantánea de fin de mes de nuestra base de datos de producción. Estas instantáneas de fin de mes son estrictamente para fines de informes, no hay inserciones, actualizaciones o eliminaciones que se les realicen. Cada una de estas instantáneas tiene una .MDF y .LDF expediente.

Quiero eliminar el .LDF archivos y liberar algo de espacio en el servidor. ¿Hay alguna razón por la que necesite mantener el .LDF archivos?

Aclaración:

Nuestra base de datos de producción se recrea cada noche a partir de extractos de archivos de otro sistema. Solo informamos en la base de datos de producción ... nunca se realizan actualizaciones.

Proceso nocturno:
Por lo que puedo decir ...
Cada noche las tablas de datos se truncan
Las tablas están pobladas a través de una serie de declaraciones de inserción a granel.
Se reconstruyen los índices

¿Fue útil?

Solución 4

Aquí está la solución que se me ocurrió para encoger los archivos LDF.

  1. Separar la base de datos
  2. Cambiar el nombre del archivo LDF a *_Old.ldf
  3. Adjuntar base de datos
  4. Retire la Refernece al LDF que falta

Esto recrea un archivo LDF que tiene un tamaño de 504k.

  1. Eliminar *_old.ldf
  2. Vaciar papelera de reciclaje

Esto ha recuperado una cantidad significativa de espacio en disco en el servidor. Funciona para nosotros porque todas estas bases de datos son bases de datos de informes estáticos solamente. No se realizarán insertos, actualizaciones o eliminaciones en estas bases de datos.

Actualización 2019-09-24: Sí, estoy de acuerdo en que esta es una muy mala idea. Dejé de hacer esto casi de inmediato. He reconstruido todos los índices utilizando un factor de relleno de 100. Sólo los archivos .df. Y cambió todas las bases de datos para que se lean solamente.

Otros consejos

No debe eliminar el archivo de registro. Si está intentando volver a colocar un archivo de datos sin el registro, SQL Server puede recrearlo técnicamente, pero hay algunos problemas potenciales, como si hubiera transacciones abiertas cuando la base de datos se separó. En cuyo caso, tendría una pérdida total de datos.

Consumir el espacio y No elimine sus archivos de registro. Estás pidiendo problemas con eso.

Ver Este artículo sobre registros de transacciones, en particular la porción de "mala gestión de log".

Como se mencionó en otra respuesta, no puede eliminar el archivo de registro. Lo que podría hacer es establecer la base de datos en READ_ONLY. Con la base de datos en READ_ONLY, no se permiten modificaciones y el archivo de registro no crecerá. Puede reducir el tamaño del archivo de registro a un tamaño mínimo y lograr su objetivo de una huella mínima. Para establecer la base de datos en READ_ONLY Ejecute el siguiente comando:

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

Puede alterar la base de datos a READ_WRITE, hacer cualquier cambio necesario, luego establecerlo en READ_ONLY cada vez que necesite.

Todavía se requiere el archivo de registro para mantener las propiedades ácidas de la base de datos.

El hecho es que puede crear una base de datos solo utilizando el archivo MDF. Es el sp_attach_single_file_db Comando (Transact-SQL). Tenga en cuenta que se eliminará en una versión futura de Microsoft SQL Server. Pero, no es inteligente eliminar sus archivos LDF. Shark tiene razón 'Estás pidiendo problemas con eso'. Otro punto de vista: ¿son sus archivos LDF enormes? Si lo son, puedes hacer algo al respecto.

  1. Establezca su base de datos en Modelo de recuperación simple. Puede hacer esto solo si no desea revertir las transacciones
  2. En lugar de hacer archivos MDF y LDF, cree un archivo de copia de seguridad de base de datos completo (.bak). Será más pequeño TNAN MDF+LDF
Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top