
Tenho um trabalho que executo todos os dias para fazer backup do meu banco de dados SQL. Acabei de comprar um novo servidor e iria transferir o backup do banco de dados para o novo seridor e restaurá-lo. Nosso banco de dados não é tão grande quanto a maioria das empresas, tem apenas 40 GB. Quando fui copiar o backup, percebi que o disco rígido estava cheio e o backup tinha 900 GB de tamanho. Usei o mesmo trabalho em diferentes versões do SQL e o backup do banco de dados nunca cresceu assim.
- Executando o Windows Server 2008 R2
- Executando o SQL Server 2008 R2 Ent
- 64 bits
Não tenho certeza se criei um script de algo errado com o trabalho, aqui está o código:
BACKUP DATABASE [DATABASE] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.COMPANY\MSSQL\Backup\DATABASE.BAK' COM NOFORMAT, NOINIT, NAME = N'DATABASE', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO declare @backupSetId como int select @backupSetId = posição de msdb..backupset onde database_name=N'DATABASE' e backup_set_id=(select max(backup_set_id) de msdb..backupset onde database_name=N'DATABASE' ) se @ backupSetId é nulo start raiserror(N'Verify falhou. Informações de backup para banco de dados ''DATABASE'' não encontradas.', 16, 1) end RESTORE VERIFYONLY FROM DISK = N'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL10_50.COMPANY \MSSQL\Backup\DATABASE.BAK' COM ARQUIVO = @backupSetId, NOUNLOAD, NOREWIND GO
(Eu adicionei as tags de código, mas por algum motivo elas não foram aceitas)
Alguém pode me dizer por que meu backup de banco de dados continua crescendo? Obrigado pela ajuda antecipadamente.
Responder1
NOINIT = Indica que o conjunto de backup é anexado ao conjunto de mídias especificado, preservando os conjuntos de backup existentes.
Seus backups estão sendo anexados. Se não quiser que o backup continue crescendo, você precisará usar o INIT.
Responder2
Ele é anexado ao final toda vez que faz backup.
Responder3
Como DanBig e Joeqwerty disseram, seus backups estão anexados ao mesmo arquivo. Se você quiser reter versões sem anexar ou substituir, crie arquivos individuais datados. Por exemplo:
Declare @DBname varchar(255),
@SQL nvarchar(max),
@today nvarchar(50),
@servername nvarchar(50)
set @today = convert(nvarchar,GETDATE(),12)
set @servername = REPLACE(@@SERVERNAME,'\','-')
set @DBName = 'YourDB'
set @SQL='BACKUP DATABASE [' + @DBName + '] TO DISK = N''c:\some backup path\' + @servername + '-' + @DBName + '-' + @today + '.bak'' WITH FORMAT, INIT, NAME = N''Full ' + @DBName + ' Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10'
EXEC SP_EXECUTESQL @SQL