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