У меня есть работа, которую я выполняю каждый день по резервному копированию базы данных SQL. Я только что купил новый сервер и собирался перенести резервную копию базы данных на новый сервер и восстановить ее. Наша база данных не такая большая, как у большинства компаний, всего 40 ГБ. Мы пошли и скопировали резервную копию, я заметил, что жесткий диск был заполнен, на котором он хранился, а размер резервной копии составлял 900 ГБ. Я использовал одну и ту же работу для разных версий SQL, и резервная копия базы данных никогда не увеличивалась таким образом.
Я не уверен, что я написал что-то не так с работой, вот код для этого:
РЕЗЕРВНОЕ КОПИРОВАНИЕ БАЗЫ ДАННЫХ [БАЗА ДАННЫХ] НА ДИСК = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.COMPANY \ MSSQL \ Backup \ DATABASE.BAK 'WITH NOFORMAT, NOINIT, NAME = N'DATABASE', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO объявить @backupSetId как int выберите @backupSetId = position from msdb..backupset, где database_name = N'DATABASE 'и backup_set_id = (выберите max (backup_set_id) из msdb..backupset, где database_name = N'DATABASE') if @ backupSetId имеет значение null begin raiserror (Ошибка N'Verify. Информация о резервной копии для базы данных «DATABASE» не найдена. », 16, 1) end RESTORE VERIFYONLY FROM DISK = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.COMPANY \ MSSQL \ Backup \ DATABASE.BAK 'С ФАЙЛОМ = @backupSetId, NOUNLOAD, NOREWIND GO
(Кодовые теги добавляю но почему то не взяли)
Может кто-нибудь сказать мне, почему моя резервная копия базы данных продолжает расти? Спасибо за помощь заранее.
NOINIT = Указывает, что набор резервных копий добавляется к указанному набору носителей с сохранением существующих наборов резервных копий.
Ваши резервные копии добавляются. Если вы не хотите, чтобы резервная копия продолжала расти, вам нужно использовать INIT.
Его добавление в конец каждый раз при резервном копировании.
Как сказали DanBig и joeqwerty, ваши резервные копии добавляются в один и тот же файл. Если вы хотите сохранить версии без добавления или перезаписи, создайте отдельные датированные файлы. Например:
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