Файл LDF продолжает расти очень большой на этапе транзакции - SQL Server 2005
У нас есть 6 шагов, где мы копируем таблицы из одной базы данных в другую. Каждый шаг выполняет хранимую процедуру.
- Удалить таблицы из целевой базы данных
- Создать таблицы в целевой базе данных
- Сжать журнал базы данных перед копированием
- Копировать таблицы из источника в место назначения
- Сжать журнал базы данных
- Резервное копирование базы данных
во время шага 4 наш журнал транзакций (файл ldf) становится очень большим, и теперь нам необходимо постоянно увеличивать максимальный размер на сервере sql, и вскоре мы (в дальнейшем) считаем, что он может поглотить все ресурсы на нашем сервере. сервер. Было предложено, чтобы в нашем скрипте мы фиксировали каждую транзакцию вместо того, чтобы ждать окончания транзакции.
Какие-либо предложения?
2 ответа
Я сделаю предположение, что вы перемещаете большие объемы данных. Типичное решение этой проблемы - разбить копию на меньшее количество строк. Это уменьшает попадание в журнал транзакций. Я думаю, что это будет предпочтительным ответом.
Другой ответ, который я видел, - это Bulk Copy, который записывает данные в текстовый файл и импортирует их в целевую базу данных, используя Bulk Copy. Я видел много постов, которые рекомендуют это. Я не пробовал это.
Если схема целевых таблиц не меняется, не могли бы вы просто обрезать данные в целевых таблицах вместо их удаления и повторного создания?
Можете ли вы изменить модель восстановления базы данных на Bulk Logged для этого процесса?
Затем, вместо создания пустых таблиц в месте назначения, выполните команду SELECT INTO для их создания. Как только они построены, измените таблицы, чтобы добавить индексы и ограничения. Выполнение таких массовых копий значительно снизит ваши требования к ведению журнала.