Hoy voy a explicaros como podéis reducir el archivo de log de una base de datos en SQL Server. Esto puede seros útil en aquellos casos en los que el archivo de log ha crecido mucho y necesitéis recuperar espacio.
Reducción del archivo de log mediante interfaz gráfica
Para reducir el archivo de log mediante interfaz gráfica tendremos que abrir la aplicación Microsoft SQL Server Management Studio, posicionarnos sobre la base de datos a la cual queremos reducir el log y con el botón derecho seleccionar la opción Tarea-Reducir-Archivos.
En tipo de archivo seleccionamos Registro (en espacio disponible podremos saber el espacio que liberaremos al ejecutar la acción), dejamos el resto de opciones por defecto y pulsamos en Aceptar para que pasados unos segundos el fichero de log de nuestra base de datos se haya reducido de forma considerable.
Reducción del archivo de log mediante comando
Si queremos hacer la reducción mediante comandos para por ejemplo crear un script que se encargue de reducir el fichero log de forma periódica y automática el comando a utilizar, indicando el nombre del fichero de log y el tamaño que tendrá el nuevo fichero, sería el siguiente :
DBCC SHRINKFILE (N'Nombre_archivo_log' , 50) GO
Nota: para saber el nombre del archivo de log podremos consultarlo pulsando sobre el botón derecho-propiedades en la base de datos, página Archivos y ahí buscaremos la fila cuyo tipo de archivo sea Registro.
Truncar archivo de log
Por último voy a indicaros el comando a utilizar en el caso que no os baste con reducir y por algún motivo necesitéis truncar el archivo de log.
ALTER DATABASE nombre_base_de_datos SET RECOVERY simple GO DBCC SHRINKFILE (nombre_archivo_log, 1) GO ALTER DATABASE nombre_base_de_datos SET RECOVERY full
Nota: para saber el nombre del archivo de log seguir los mismos pasos indicados en el apartado anterior.
Como siempre espero os haya sido de utilidad.
Entradas relacionadas
- Monitorizar SQL Server con Zabbix
- SQL Server: Habilitar xp_cmdshell
- SQL Server: Permitir conexiones remotas
- Realización de copias de seguridad programadas en SQL Server Express
- Fragmentación de los índices en SQL Server
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.
que pasa si no se utiliza set recovery simple y full?
Hola Solivan,
Pues seguramente no te funcionará la reducción del archivo de log y es posible te de algún un error.
Saludos.
YA LO INTENTE Y NO SE ME REDUCE EL ARCHIVO MIS DISCO DURO ESTA LLENO QUE PUEDO HACER?
Hola Alex,
¿Has probado con la opción de truncar?.
Saludos.
Hola Sergio
Intente truncar y no reduce el log
Hola Richard,
Es extraño que al truncar no te reduzca el log, ¿pusiste la base de datos en modo simple antes de lanzar el comando para truncar?.
Saludos.
Para que se pueda reducir el Log:
Debes conectarte a la BBDD como sa.
No debe de haber transacciones pendientes.
Desconectar a todos los usuarios y ejecutar la siguiente instrucción SQL:
select name, log_reuse_wait_desc from sys.databases
El campos log_reuse_wait_desc de la base de datos debe estar con el valor «NOTHING» para que se pueda ejecutar la reducción.
Buenas, a ver si me dan una mano, estoy en esta situación y quiero reducirlos archivo, he intentado varios metodos y nada.
tempdb.mdf 315,200 Kb
tempdb2.ndf 7,508,224 Kb
tempdb3.ndf 7,407,552 Kb
tempdb4.ndf 7,902,784 Kb
tempdb5.ndf 8,078,656 Kb
tempdb6.ndf 9,011,726 Kb
tempdb.ldf 47,615 Kb
Hola John,
Pues precisamente la entrada que voy a publicar esta tarde explica la forma de reducir el tamaño de la base de datos Temp de SQL sin necesidad de parar el servicio de SQL Server, por lo que estate atento que posiblemente sea la solución a tu problema.
Saludos.
jajaja, ya lo resolvi, pero esperare esta nueva forma.
Gracias.
Hola John,
nos podrías compartir el cómo lo resolviste, saludos.
Hola buenas, recuerden como tenia mis temdb :
tempdb.mdf 315,200 Kb
tempdb2.ndf 7,508,224 Kb
tempdb3.ndf 7,407,552 Kb
tempdb4.ndf 7,902,784 Kb
tempdb5.ndf 8,078,656 Kb
tempdb6.ndf 9,011,726 Kb
tempdb.ldf 47,615 Kb
Ahora en la configuración de las mismas si vas a propiedades de los archivos, veras que por lo general la ultima columna contempla y porcentaje de auto crecimiento y eso me hizo entender el porque habian crecido a lo lardo de los años (+ o – 8 años).
La solución fue simple, en esta misma parte ajuste el valor inicial en mega y lislo, antes tenia unos valores iniciales que ya no podia mantener pero ahora los reajuste y listo.
JP.
Tengo una base de datos de producción y otra de prueba, quiero reducir los archivos .ldf que tienen diferentes nombre pero los archivos .mdf de cada base de datos es igual, aunque se guardan en diferentes carpetas. ¿Es posible que para truncar estos archivos, escriba la ruta completa del .mdf en el script DBCC SHRINKFILE (nombre_archivo_log, 1) ?. Espero haberme hecho entender. Muchas gracias.
Hola Carlos,
Pues sinceramente no se me ha dado nunca el caso por lo que no podría decirte.
Si consigues solucionarlo te agradecería lo pusieras en un comentario por si en un futuro a alguien le surge el mismo problemas sepa como solucionarlo.
Saludos.
Hola Sergio, la solución es muy sencilla. Ingresé a las propiedades de la base de datos, por la opción de archivos y cambié el nombre lógico de la base de datos y así puede ejecutar el script para reducir los archivos. Muchas gracias por su atención.
Gracias Carlos, seguro que tú aporte ayuda a otro compañero 😉
Tremedo crack, me has salvado,
Super bien explicado, gracias por los aportes.
Me alegra poder haberte ayudado 😊
que tal buenas tardes
igual tengo el problema del archivo log demasiado grande ya esta por llenarse el disco, ya trate de darle reducir pero me marca error que no se puede porque esta en replicacion, les agradeceria si alguien sabe como reducir en esta condicion
saludos!