Restaurar el archivo bak a archivos de bases de datos mdf y ldf más pequeños

11

Tengo una base de datos heredada cuya pesadilla falta de diseño no entraré aquí, pero los archivos en el servidor son (relativamente) enormes. Yo tengo:

MyDatabase.mdf
: 24.8GB MyDatabase.ldf: 114.6GB

Esta base de datos se respalda en un archivo .bak todas las noches y se envía a nuestro servidor de informes, donde se restaura. El archivo .bak es mucho más pequeño con solo 1.8GB.

Sin embargo, cuando intento restaurarlo en el servidor de informes, falla debido a la falta de espacio. Hay alrededor de 100GB gratis en el servidor, y está tratando de consumir los 139.4GB completos que los archivos consumieron en el servidor original. A menos que mi conocimiento de la compresión sea terriblemente incorrecto, estoy bastante seguro de que el archivo de 1.8GB no se está expandiendo en un 7400%.

Mi pregunta: ¿Hay alguna forma de decirle a SQL Server que restaure este archivo de copia de seguridad sin reservar ese espacio por adelantado? No me importan ninguno de los registros; Solo necesito los datos para estar allí. Entiendo las bases de datos desde la perspectiva del desarrollo y el esquema, pero de ninguna manera soy un tipo de DBA.

Esto está en SQL Server 2008 R2. Gracias por cualquier ayuda o sugerencia.

eouw0o83hf
fuente

Respuestas:

11

La copia de seguridad contiene dos piezas de información:

Los datos reales en la copia de seguridad son esos 1.8 GB. Pero los metadatos describen el diseño de los archivos como en el servidor de producción original. Si bien parece compresión, no es compresión real. Es solo metadatos vs. contenido. El problema es que durante RESTORE la máquina de informes crea un diseño como se describe en los metadatos, por lo tanto 114.6GB + 24.8GB. Ahora para la pregunta real: ¿puede restaurarlo sin recrear el diseño original del archivo DB? No. Sin embargo, hay otras soluciones a su problema: vuelva a comprobar el DB original. Reducir el registro de transacciones cubre los pasos que debe seguir, ya que el registro es su principal problema. A continuación, implementaría el envío de registros en lugar de la copia de seguridad / restauración.

Remus Rusanu
fuente
Gracias; reducir el registro de transacciones hizo el truco perfectamente.
eouw0o83hf
1
¿Envío de registros en lugar de copias de seguridad de registros?
Thomas Stringer
44
@Shark: envío de registros en lugar de copias de seguridad completas , como un medio para entregar la base de datos a la máquina de informes.
Remus Rusanu
Oh está bien, me perdí completamente esa parte de la pregunta. ¡¡Gracias por la aclaración!!
Thomas Stringer
0

SQL Server 2012 permite usar solo el archivo mdf de la base de datos y adjuntarlo a SQL Server: http://msdn.microsoft.com/en-us/library/ms174385.aspx . SQL Server crea un nuevo archivo ldf donde puede especificar el tamaño. Entonces:

  • use el modelo de recuperación simple para evitar que su archivo de registro crezca, o
  • use el modelo de recuperación completa y realice copias de seguridad de registros de transacciones regulares. Esto también evitará que el archivo de registro crezca
Carol Baker West
fuente