Perché la dimensione del file .bak aumenta / raddoppia con ogni backup consecutivo su SQL Server?


10

Sto eseguendo un semplice DB su SQL Server 2012 Express.

Proprio oggi, quando eseguo il backup del database, la .bakdimensione del file raddoppia rispetto al backup precedente pochi minuti prima. Oggi ho eseguito diversi backup (tramite SQL Server Management Studio -> tipo di backup: completo) e con ognuno il .bakfile continua a raddoppiare.

In SQL Server Mgmt Studio, quando faccio clic con il pulsante destro del mouse sul mio DB -> "Rapporti" -> "Eventi di backup e ripristino" -> espandi "Operazioni di backup riuscite":

Il rapporto qui mostra che l'ultima dimensione del backup è stata registrata come 55 MB, ma quando vado al .bakfile effettivo è 260 MB. Ogni altro backup oggi è stato registrato anche con dimensioni di 55 MB, mentre i .bakfile corrispondenti sono più volte più grandi (e aumentano con ogni operazione di backup).

Cosa potrebbe andare storto? Non ho apportato modifiche al database da quando è iniziato.

Risposte:


14

Il file di backup contiene più copie del database poiché non viene "inizializzato" o "formattato" con ogni backup.

Vai alla scheda "Opzioni" nella finestra di dialogo "Backup del database" e seleziona "Sovrascrivi tutti i set di backup esistenti":

inserisci qui la descrizione dell'immagine


8

Presumo che tu stia eseguendo il backup dello stesso file ogni volta. C'è un'opzione per INITo NOINITquando si esegue un backup. NOINIT(che è l'impostazione predefinita) dice di aggiungere solo un backup aggiuntivo al file.

Per BOL:

{NOINIT | DENTRO }

Controlla se l'operazione di backup aggiunge o sovrascrive i set di backup esistenti sul supporto di backup. L'impostazione predefinita è aggiungere al set di backup più recente sul supporto (NOINIT).

Quindi, ogni volta che esegui il backup di 55 MB, il file diventa ~ 55 MB più grande.

Se includi la INITclausola nel comando di backup, sovrascriverà ogni volta il backup esistente.

L'altra opzione ovviamente è quella di eseguire i backup in nuovi file ogni volta e ripulire i vecchi file. Questa è spesso una buona idea nel caso in cui uno dei backup correnti sia errato o sia necessario ripristinarlo nella cronologia.


2

Se lo stai facendo direttamente in SQL non usando la procedura guidata di sql server management studio. Devi specificare "NOINT" o "INIT" quando esegui il backup per dire aggiungi al file o sovrascrivilo rispettivamente.

Ecco l'SQL per questo

BACKUP DATABASE <data_base_name> TO DISK = <File_Path> WITH INIT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.