¿Es posible restaurar sql-server bak y reducir el registro al mismo tiempo?


26

Tenemos un archivo bak de un cliente que hemos transferido a nuestras oficinas de desarrolladores para la investigación de problemas. La copia de seguridad es actualmente de 25 GB y la base de datos restaurada tiene aproximadamente el mismo tamaño, sin embargo, necesita 100 GB para restaurarse. Creo que esto se debe a que la base de datos está configurada para tener un tamaño de registro de transacciones de 75 GB. Después de restaurar la base de datos, podemos reducir el archivo de registro, pero ¿hay alguna manera de hacerlo en la restauración?


3
Que yo sepa, usted no puede alterar la base de datos hasta que haya completado la restauración.
Shawn Melton

3
He estado en la misma situación y espero la respuesta. Solo para comentar, hay un producto: la restauración virtual SQL de red-gate. Nunca he usado esto, pero de acuerdo con el sitio: 'La base de datos montada requiere almacenamiento adicional casi cero sobre el archivo de copia de seguridad'.
StanleyJohns

Respuestas:


16

No hay forma de reducir la copia de seguridad como parte del proceso de restauración. La base de datos restaurada debe verse exactamente como la base de datos de origen, con la única excepción de que puede cambiar las letras y carpetas de la unidad.


34

Hay un truco de do-not-ever-do-this-in-a-live-environment que puede usar donde el espacio es limitado, restaurando el archivo de registro en una carpeta comprimida. Intente esto al comprimir una carpeta existente y restaurarla resultará en un error, por lo que debe hacer trampa con un enlace simbólico.

  1. Crea una carpeta comprimida D:\LogCompressed\
  2. Crear un enlace simbólico a la carpeta comprimida mklink /D /J D:\Log\ D:\LogCompressed\

  3. Restaure su base de datos con el archivo ldf apuntando a D:\Log\

  4. Reducir el archivo de registro a un tamaño apropiado

  5. Separe la base de datos, mueva el archivo de registro a una carpeta sin comprimir, adjunte

Está sucio, hace trampa, NO LO HAGAS EN VIVO , pero funciona. La prueba rápida de una base de datos recién creada con un archivo de registro de 32 MB muestra que ocupa 330 kb en el disco cuando se comprime, descomprime la carpeta y el tamaño del disco vuelve a 32 MB.


2
@ Mark: este truco funciona, pero no es perfecto. Incluso si el archivo de registro ocupa mucho menos espacio que su tamaño real, no puede restaurar la base de datos a menos que el disco realmente tenga espacio libre tanto como el tamaño real de la base de datos. Besize, mientras se restaura, el tamaño real del archivo de registro baja lentamente del tamaño real, es doloroso. Sin embargo, sigue siendo un muy buen truco. Gracias.
chenwq

9

Creo que la razón por la que su copia de seguridad es de 25 GB y la base de datos restaurada es de 100 GB no se debe a su registro de transacciones. Lo que supongo es que sus archivos de base de datos tienen 100 GB de espacio asignado y hay 25 GB de datos reales en la base de datos.

Hay una diferencia entre el espacio de archivo de la base de datos asignado y el espacio de datos utilizado . En este caso, el primero es de 100 GB y el último es de 25 GB.


1
El cliente asigna 75 GB a su registro de transacciones. Después de restaurar, actualmente cambio la asignación de registro a 1 GB. Si es posible, me gustaría restaurar esta base de datos a un servidor donde las unidades tengan menos de 100 GB de espacio libre. Sin tener que restaurar a otro servidor, truncar, respaldar y restaurar nuevamente.
Adam Butler

@ Adam Butler, ¿sería posible restaurar temporalmente el primer servidor para que pueda reducir el tamaño de los archivos, luego hacer una copia de seguridad de la copia y restaurarla en el servidor de destino?
DForck42
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.