Por que o tamanho do arquivo .bak está aumentando / dobrando a cada backup consecutivo no SQL Server?

10

Estou executando um banco de dados simples no SQL Server 2012 Express.

Ainda hoje, quando faço backup do banco de dados, o .baktamanho do arquivo é duplicado em relação ao backup anterior, minutos antes. Fiz vários backups hoje (através do SQL Server Management Studio -> tipo de backup: completo) e, com cada um deles, o .bakarquivo continua duplicando.

No SQL Server Mgmt Studio, quando clico com o botão direito do mouse no meu banco de dados -> 'Relatórios' -> 'Eventos de backup e restauração' -> expanda 'Operações de backup bem-sucedidas':

O relatório aqui mostra que o tamanho do backup mais recente foi registrado como .bak55 MB , mas quando vou para o arquivo real, ele tem 260 MB. Hoje, os outros backups também foram registrados com tamanho de 55 MB, enquanto os .bakarquivos correspondentes são várias vezes maiores (e crescem a cada operação de backup).

O que poderia dar errado? Não fiz alterações no banco de dados desde que isso começou a acontecer.

full_prog_full
fonte

Respostas:

14

O arquivo de backup contém várias cópias do banco de dados, pois não está sendo "inicializado" ou "formatado" com cada backup.

Vá para a tabela 'Opções' na caixa de diálogo "Backup do banco de dados" e selecione a opção "Substituir todos os conjuntos de backup existentes":

insira a descrição da imagem aqui

Max Vernon
fonte
8

Suponho que você esteja fazendo backup no mesmo arquivo a cada vez. Há uma opção para INITou NOINITquando você executa um backup. NOINIT(que é o padrão) diz para ele adicionar apenas um backup adicional ao arquivo.

Por BOL:

{NOINIT | INICIAR }

Controla se a operação de backup anexa ou substitui os conjuntos de backup existentes na mídia de backup. O padrão é anexar ao conjunto de backup mais recente na mídia (NOINIT).

Portanto, cada vez que você executa seu backup de 55 MB, o arquivo fica ~ 55 MB maior.

Se você incluir a INITcláusula em seu comando de backup, ela substituirá o backup existente a cada vez.

A outra opção, é claro, é executar seus backups em novos arquivos a cada vez e limpar os arquivos antigos. Geralmente, é uma boa ideia se um dos backups atuais estiver ruim ou se você precisar se recuperar no histórico.

Kenneth Fisher
fonte
2

Se você estiver fazendo isso diretamente no SQL, não usando o assistente do sql server management studio. Você deve especificar "NOINT" ou "INIT" ao fazer backup para dizer adicionar ao arquivo ou substituí-lo, respectivamente.

Aqui está o SQL para isso

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