Метод быстрого усечения журнала транзакций и перевода БД в offline

ПУБЛИКАЦИИ  

По материалам статьи Krishnan М. Kaniappan на swynk.com «Quickly Shrinking the Transaction Log»

В этой статье Кришнан обсуждает два следующих аспекта: Усечение журнала транзакций и предлагает метод перевода базы данных в автономный режим (offline).

Усечение журнала транзакций

Кришнан предлагает следующую уловку для быстрого усечения журнала транзакций, который у Вас может стать слишком большим. Вы можете сократить журнал транзакций, используя системные хранимые процедуры sp_detach_db и sp_attach_db. Для получения дополнительной информации об отсоединении и присоединении баз данных обратитесь к BOL.
Когда Вы отсоединяете базу данных, используя sp_detach_db, SQL сервер будет знать, что работа с базой данных была корректно завершена, и для последующего прикрепления базы данных, журнал транзакций не нужен и может быть не доступен. Его можно удалить. Когда Вы прикрепляете базу данных, SQL сервер создаёт новый журнал, который будут иметь минимальный размер. Для этого необходимо выполнить следующие шаги:

- Отсоедините базу данных, используя процедуру sp_detach_db (предварительно убедитесь, что никакие процессы не используют файлы базы данных);
- Удалите журнал;
- Прикрепите базу данных заново, используя процедур sp_attach_db у.

Так как Вы отсоединяете и прикрепляете базу данных к тому же самому серверу, Вы не будете иметь проблем с нарушением логинов.
Для получения дополнительной информации по усечению файлов журналов транзакций, состоящих из одного или более журналов, Вы можете обратиться к статьям Базы Знаний Микрософт: Q256650 (для SQL 7.0) и Q272318 (для SQL 2000).

Комментарий автора перевода

Эта уловка не работает, если журнал транзакций разбит на два или более файла. Макетирование этой проблемы на моём полигоне показало, что попытка применить уловку Кришнана приводит к ошибке. Новый, с минимальным размером журнал создаётся при прикреплении базы, только если у открепляемой базы был один журнал. Обойти это ограничение удалось только после того, как оператором ALTER DATABASE были уничтожены все файлы журнала, кроме первого, а потом, файл базы был повторно прикреплён оператором CREATE DATABASE с опцией FOR ATTACH.

Метод перевода базы данных в автономный режим (offline).

В SQL сервере 7.0 функция перевода базы данных в автономный режим убрана из Enterprise Manager. Для этого используют процедуру sp_dboption. Например, чтобы перевести базу данных ‘pubs’ в автономный режим, Вы должны выполнить:

sp_dboption ‘pubs’, ’offline’, ’true’

До перевода базы данных в автономный режим необходимо убедится, что эту базу данных не используют другие процессы. Вернуть базу данных в интерактивный режим можно, используя ключевое слово «false»:

sp_dboption ‘pubs’, ’offline’, ’false’

В SQL сервер 2000 опция перевода базы данных в автономный режим присутствует в Enterprise Manager.


Перевод: Александр Гладченко  2001г.

ПУБЛИКАЦИИ

Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz