Таблица усеченной базы данных почты

У нас были проблемы с дисковым пространством на нашем SQL-сервере (2005), и я просто выполнил несколько запросов на sys.allocation_units таблицы и обнаружили, что у нас есть 26 ГБ почтовых вложений базы данных. Видимо мы только что спрятали это в нашем msdb без какой-либо очистки в течение пары лет.

Поэтому я попытался использовать sysmail_delete_mailitems_sp но мы заполняем наш журнал, и это выходит за рамки нашего ограничения пространства. Я посмотрел в этом sys sproc и все, что он на самом деле делает, работает

DELETE FROM sysmail_allitems 

с некоторыми параметрами и обработкой ошибок. Это системное представление, которое я предполагаю удаляет из коллекции таблиц sysmail_xyz.

Нам не нужны эти старые почтовые данные. Все, что мы отправляем по почте, уже зарегистрировано и заархивировано на нашем прикладном уровне. Могу ли я просто запустить

TRUNCATE TABLE sysmail_allitems

Это вид, но он удаляется, поэтому мне интересно, смогу ли я тоже TRUNCATE. Если нет, может быть, я могу

TRUNCATE TABLE sysmail_attachments 

но я боюсь, что осиротлю то, что сломает мою систему. Какие-либо предложения?

1 ответ

Решение

Возможно, вы могли бы удалить кусками?

  • Определите дату в далеком прошлом, когда вы знаете, что в msdb
  • Построить WHILE цикл для выполнения sysmail_delete_mailitems_sp на эту дату (@sent_before=@loop_date), затем увеличьте эту дату
  • И так до настоящего времени

Таким образом, вы не будете так много заполнять журнал...

Другие вопросы по тегам