SQL Server 2000 - существует ли быстрый способ удаления истории резервного копирования? - PullRequest
1 голос
/ 02 февраля 2012

У нас есть экземпляр SQL Server 2000, в котором MSDB вырос до огромных размеров из-за того, что история резервного копирования никогда не удалялась в течение нескольких лет. Я хотел бы полностью очистить историю резервного копирования (я не понимаю, зачем она нужна) и освободить дисковое пространство, используемое всеми этими данными.

Я понимаю, что вы можете использовать команду sp_delete_backuphistory, но она слишком медленная (ничего не происходит в течение 2+ часов), и во время ее выполнения файл журнала транзакций увеличивается, чтобы заполнить весь диск (несколько ГБ). Похоже, что SQL Server 2000 не поддерживает создание этой базы данных по базе данных.

Мне нужно найти способ удаления всех данных, которые сначала не заполняют диск. Так что или поэтапное удаление, чтобы журнал не увеличивался до большого, или, возможно, каким-то образом с использованием усеченной таблицы, но я не уверен, есть ли безопасный способ сделать это, и, поскольку я не эксперт по SQL, я бы я действительно знаю, как это сделать, не уничтожив мою MSDB базу данных!

Любая помощь будет оценена!

Ответы [ 3 ]

2 голосов
/ 02 февраля 2012

Я использую что-то вроде следующего:

declare @oldest_date datetime, @newest_date datetime

select @oldest_date = min(backup_start_date) from backupset
select @newest_date = dateadd(day, -45, getdate())

while(@oldest_date <= @newest_date)
begin
   exec sp_delete_backuphistory @oldest_date
   set @oldest_date = dateadd(day, 7, @oldest_date)
end

Это приведет к удалению истории за неделю, пока вы не будете схвачены. Приятно то, что вы можете вставить это в работу и запускать ее периодически (например, еженедельно), и это будет правильно.

1 голос
/ 02 февраля 2012

Попробуйте уменьшить количество строк, которые вы удаляете за один раз. Первый параметр sp_delete_backuphistory является самым старым из сохраняемых дней.

EXEC sp_delete_backuphistory '2000-01-01'
EXEC sp_delete_backuphistory '2001-01-01'
EXEC sp_delete_backuphistory '2002-01-01'
...

Это также может помочь снизить модель восстановления до Simple, если в данный момент она равна Full.

0 голосов
/ 02 февраля 2012

Сначала сделайте резервную копию, Затем создайте базу данных для каждого года и восстановите базу данных из файла резервной копии для данных за один год. затем очистите весь файл журнала после завершения процесса.

...