Таблица усеченной базы данных почты
У нас были проблемы с дисковым пространством на нашем 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
), затем увеличьте эту дату - И так до настоящего времени
Таким образом, вы не будете так много заполнять журнал...