Файл LDF продолжает расти очень большой на этапе транзакции - SQL Server 2005

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

  1. Удалить таблицы из целевой базы данных
  2. Создать таблицы в целевой базе данных
  3. Сжать журнал базы данных перед копированием
  4. Копировать таблицы из источника в место назначения
  5. Сжать журнал базы данных
  6. Резервное копирование базы данных

во время шага 4 наш журнал транзакций (файл ldf) становится очень большим, и теперь нам необходимо постоянно увеличивать максимальный размер на сервере sql, и вскоре мы (в дальнейшем) считаем, что он может поглотить все ресурсы на нашем сервере. сервер. Было предложено, чтобы в нашем скрипте мы фиксировали каждую транзакцию вместо того, чтобы ждать окончания транзакции.

Какие-либо предложения?

2 ответа

Решение

Я сделаю предположение, что вы перемещаете большие объемы данных. Типичное решение этой проблемы - разбить копию на меньшее количество строк. Это уменьшает попадание в журнал транзакций. Я думаю, что это будет предпочтительным ответом.

Другой ответ, который я видел, - это Bulk Copy, который записывает данные в текстовый файл и импортирует их в целевую базу данных, используя Bulk Copy. Я видел много постов, которые рекомендуют это. Я не пробовал это.

Если схема целевых таблиц не меняется, не могли бы вы просто обрезать данные в целевых таблицах вместо их удаления и повторного создания?

Можете ли вы изменить модель восстановления базы данных на Bulk Logged для этого процесса?

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

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