¿Por qué el tamaño del archivo .bak aumenta / se duplica con cada copia de seguridad consecutiva en SQL Server?

10

Estoy ejecutando una base de datos simple en SQL Server 2012 Express.

Justo hoy, cuando realicé una copia de seguridad de la base de datos, el .baktamaño del archivo se duplica al de la copia de seguridad anterior solo unos minutos antes. Hoy he realizado varias copias de seguridad (a través de SQL Server Management Studio -> tipo de copia de seguridad: completa), y con cada una de ellas el .bakarchivo sigue duplicándose.

En SQL Server Mgmt Studio, cuando hago clic derecho en mi DB -> 'Informes' -> 'Respaldar y restaurar eventos' -> expando 'Operaciones exitosas de respaldo':

El informe aquí muestra que el último tamaño de copia de seguridad se registró como 55 MB, pero cuando voy al .bakarchivo real es de 260 MB. Cada otra copia de seguridad de hoy también se grabó como un tamaño de 55 MB, mientras que sus .bakarchivos correspondientes son varias veces más grandes (y crecen con cada operación de copia de seguridad).

¿Qué podría estar yendo mal? No he realizado ningún cambio en la base de datos desde que esto comenzó a suceder.

full_prog_full
fuente

Respuestas:

14

El archivo de copia de seguridad contiene varias copias de la base de datos, ya que no se está "inicializando" o "formateando" con cada copia de seguridad.

Vaya al tabl 'Opciones' en el cuadro de diálogo "Copia de seguridad de la base de datos" y seleccione "Sobrescribir todos los conjuntos de copias de seguridad existentes":

ingrese la descripción de la imagen aquí

Max Vernon
fuente
8

Supongo que está haciendo una copia de seguridad en el mismo archivo cada vez. Hay una opción para INITo NOINITcuando ejecuta una copia de seguridad. NOINIT(que es el valor predeterminado) le dice que solo agregue una copia de seguridad adicional al archivo.

Por BOL:

{NOINIT | EN ESO }

Controla si la operación de respaldo agrega o sobrescribe los conjuntos de respaldo existentes en los medios de respaldo. El valor predeterminado es agregar al conjunto de copia de seguridad más reciente en los medios (NOINIT).

Entonces, cada vez que ejecuta su copia de seguridad de 55 MB, el archivo se hace ~ 55 MB más grande.

Si incluye la INITcláusula en su comando de copia de seguridad, sobrescribirá la copia de seguridad existente cada vez.

La otra opción, por supuesto, es ejecutar sus copias de seguridad en archivos nuevos cada vez y limpiar los archivos antiguos. Con frecuencia, esta es una buena idea en caso de que una de las copias de seguridad actuales sea incorrecta o si necesita recuperarse en el historial.

Kenneth Fisher
fuente
2

Si lo está haciendo directamente en SQL sin usar el asistente de SQL Server Management Studio Studio. Tiene que especificar "NOINT" o "INIT" al hacer una copia de seguridad para decir agregar al archivo o sobrescribirlo respectivamente.

Aquí está el SQL para ello

BACKUP DATABASE <data_base_name> TO DISK = <File_Path> WITH INIT
Muhammad Abdulwanis
fuente