2009-05-06 28 views
19

Así que he estado descuidando hacer copias de seguridad de mi base de datos fogbugz, y ahora el archivo ldf fogbugz tiene más de 2 y medio gigs. Eso ha sido creado durante los seis meses que hemos estado usando fogbugz.¿Cómo puedo disminuir el tamaño de mi archivo de registro del servidor sql?

Realicé una copia de seguridad de la base de datos, luego realicé una copia de seguridad y trunqué el registro de transacciones, pero el registro de transacciones sigue siendo de 2 gigas y medio. Hice una reducción en el archivo de registro y todavía son 2 y medio conciertos. Nada de lo que hago parece reducir el tamaño del archivo.

¿Hay alguna forma de solucionar el problema? ¿O es la única manera de volver a este punto para separar la base de datos, eliminar el archivo de registro y luego volver a conectarlo con uno nuevo?

+0

vea [esta respuesta] (http: // stackoverflow.com/questions/40402/what-is-the-command-to-truncate-a-sql-server-log-file/40420 # 40420) en una pregunta similar –

Respuesta

22

Bienvenido al mundo voluble de la administración de registros de SQL Server.

ALGO es incorrecto, aunque no creo que nadie pueda contarle más que eso sin información adicional. Por ejemplo, ¿esta base de datos se ha utilizado alguna vez para la replicación Transactional SQL Server? Esto puede causar problemas como este si una transacción no se ha replicado a un suscriptor.

Mientras tanto, esto debería permitir al menos que mates el archivo de registro:

  1. Realice una copia de seguridad completa de su base de datos. No te saltes esto De Verdad.
  2. Cambiar el método de copia de seguridad de su base de datos a "punto de control" "simple"
  3. Abrir una ventana de consulta y entrar y ejecutar
  4. realizar otra copia de seguridad de la base de datos
  5. Cambiar el método de copia de seguridad de su base de datos de nuevo a " Completo "(o lo que sea, si no fuera ya simple)
  6. Realice una copia de seguridad completa final de la base de datos.

Ahora debería poder reducir los archivos (si realizar la copia de seguridad no lo hizo por usted).

¡Buena suerte!

+0

¡Sí! Eso es bastante voluble de hecho. –

+3

esta técnica no se recomienda - http://www.sqlskills.com/BLOGS/PAUL/post/Importance-of-proper-transaction-log-size-management.aspx –

+1

... por lo que dije que puede lograr lo que necesita en el INTERIM, hasta que descubra qué impide que sus registros se trunquen. –

3
  1. Asegurar el modo de copia de seguridad de la base de datos se establece en simple (ver here para una visión general de los diferentes modos). Esto evitará que SQL Server espere una copia de seguridad del registro de transacciones antes de reutilizar el espacio.

  2. Utilice dbcc shrinkfile o Management Studio para reducir los archivos de registro.

El paso n. ° 2 no hará nada hasta que se establezca el modo de copia de seguridad.

+1

¿Cómo lo hago? Uso dbcc shrinkfiles en Management Studio? ¿Es eso diferente de seleccionar Tareas-> Reducir-> Archivos? Porque lo hice y el archivo no se achica. Además, puedo configurar fogbugz fácilmente y resolver el problema, pero siento que aquí me falta algo, como que el archivo de registro debería bajar de tamaño y no es así. –

+0

@WindyCityEagle: Sugeriría leer en las copias de seguridad de SQL Server en BOL, allí se explican los detalles. Rápidamente: en el modo de copia de seguridad completa, todas las transacciones se retienen en los archivos de registro hasta que se realiza una copia de seguridad del archivo de registro, luego ese espacio puede reutilizarse. Esto tiene sentido en muchos entornos de producción (copias de seguridad siempre absolutamente consistentes), pero en casos más simples es demasiado esfuerzo. Así que el modo simple funciona. – Richard

+0

@WindyCityEagle: "dbcc ..." es lo que usa en SQL (desde cualquier cliente), en el estudio de administración es Tareas | Reducir | ... pero eso es solo un contenedor GUI alrededor del comando dbcc. – Richard

3

Tiene que contraer & hacer una copia de seguridad del registro varias veces para reducir el tamaño del archivo de registro, porque las páginas del archivo de registro no se pueden reorganizar como páginas de archivos de datos, solo se truncan. Para una explicación más detallada check this out.

separar el db & borrar el archivo de registro es peligroso. no haga esto a menos que desee pérdida de datos

+0

El enlace fue de gran ayuda; me gustaría publicar el SQL desde el enlace. – OldCurmudgeon

+0

404 link not found :( –

23
Perform a full backup of your database. Don't skip this. Really. 
Change the backup method of your database to "Simple" 
Open a query window and enter "checkpoint" and execute 
Perform another backup of the database 
Change the backup method of your database back to "Full" (or whatever it was, if it wasn't already Simple) 
Perform a final full backup of the database. 

Run below query one by one 
1- USE Database_Name 
2- select name,recovery_model_desc from sys.databases 
3- ALTER DATABASE Database_Name SET RECOVERY simple 
4- DBCC SHRINKFILE (Database_Name_log , 1) 
+0

El tipo de recuperación de mi base de datos estaba COMPLETO y no pude encontrar la manera de cambiarlo a través de la GUI en el estudio de administración 2014. Esta respuesta resolvió el problema. El archivo de registro 12GB ahora está de vuelta en 1 MB , ¡muchas gracias! – Mixxiphoid

Cuestiones relacionadas