
У одной из моих баз данных возникла проблема с заполнением журнала транзакций. Она настроена на полное восстановление и регулярно резервируется с помощью плана обслуживания. У меня есть полная резервная копия базы данных каждые выходные, затем ежедневные дифференциальные резервные копии в течение недели вместе с резервной копией журнала транзакций каждый час. Я проверил статус усечения журнала, и текущий статус — LOG_BACKUP. Я могу очистить его, выполнив резервное копирование по требованию, но почему он не очищается с помощью плана обслуживания?
Что я упускаю?
решение1
Вам может потребоваться делать резервные копии журналов транзакций чаще, чем каждый час, если в вашей базе данных много транзакций. Каждые 15 минут — это не редкость. Я бы посоветовал отредактировать задание по обслуживанию, чтобы чаще запускать резервные копии журналов.
Также, достаточно ли места на диске у .ldf? Если физический файл не может расти, то даже при усечении ему не хватит места.
решение2
На то, будет ли журнал транзакций SQL Server отображаться как «полный» или его необходимо увеличить, влияют несколько факторов:
- Длительные транзакции
- Частота резервного копирования журналов при полной или массовой модели восстановления журналов
- Количество и размер виртуальных файлов журнала (vlfs) в журнале транзакций
У Джес Шульц Борланд есть бесплатное видео, в котором она более подробно описывает, как все это работает. Кажется, это вам поможет:http://www.brentozar.com/archive/2012/09/how-sql-server-works-log-file-video/
Когда важно избежать потери данных, выполняйте резервное копирование журналов каждыеодинминута не является чем-то необычным. Все дело в том, сколько данных можно потерять в худшем случае.
решение3
Да. Это случается, если вы никогда не делаете резервное копирование. Это похоже на то, как бак в вашей машине становится пустым, если вы никогда не удосужитесь сделать свою работу и заправить его.
Журналы транзакций следует удалять после полного или инкрементного резервного копирования. Если вы не делаете резервные копии, установите простую модель базы данных.
Если вы регулярно делаете полные резервные копии, то, очевидно, кто-то не знал, как их делать, и забыл внести удаление журнала транзакций в последовательность. В плане обслуживания есть настройка для этого.
ТЕМ НЕ МЕНЕЕ: если вы запускаете что-то вроде репликации, это может заблокировать журнал, если вы отстанете.