Очистка после экспорта базы данных SQL Server несколько раз

Моему клиенту нужно было перенести его производственную базу данных на новый сервер. Большую часть базы данных составляют сообщения аудита. Файл изначально был около 200 ГБ. В этой ситуации я всегда делал, чтобы минимизировать время простоя, это перенести резервную копию на новый сервер, а затем усечь таблицу аудита. Это гарантирует, что после переключения все новые данные и после того, как старая база данных больше не используется, я экспортирую содержимое таблицы аудита в новую базу данных, чтобы убедиться, что все сообщения аудита сохранены.

Проблема здесь в том, что я как-то запустил экспортное задание 5 раз, и теперь база данных превышает 1 ТБ. Мне удалось удалить все дублирующиеся данные из таблицы, но сам файл по-прежнему значительно превышает 1 ТБ.

У кого-нибудь есть предложения как убрать этот бардак? Является ли опция Shrink лучшим маршрутом или есть что-то лучше?

1 ответ

Вот что я бы сделал:

  • Используйте DBCC SHRINKFILE, чтобы уменьшить отдельные файлы, а не всю БД

  • Используйте ALTER INDEX REORGANIZE, чтобы уменьшить фрагментацию индекса (т.е. ALTER INDEX MyIndex ON dbo.MyTable REORGANIZE;). в противном случае вы рискуете взорвать вашу БД, пытаясь уменьшить свои индексы.

  • Наконец, я бы сжал файл журнала

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

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