Журнал транзакции для базы данных переполнен. Причина: “LOG_BACKUP”
На днях при закачке архива базы у программиста появилась ошибка следующего содержания: Журнал транзакции для базы данных переполнен. Причина: ‘LOG_BACKUP’. Быстрая диагностика показала что файл журнала транзакций данной SQL базы разросся до огромных объемов и занял все свободное место на диске.
Проблема была быстро исправлена. И сегодня рассмотрим в этой заметке способы её устранения.
1-ый способ. Сокращаем объем файла журнала регистрации (.ldf) вручную.
Для этого необходимо провести ряд не сложных действий: переводим модель восстановления базы в ‘Простая’ (в случае если другая) / сжимаем файл журнала транзакции / переводим модель восстановления в прежнее значение.
В результате данных операциях файл журнала транзакций сократится до нужного размера.
2-ой способ. Сокращаем объем файла при помощи готового скрипта, который все вышеуказанные действия выполнит программно (для базы Fin_Test_All):
1 2 3 4 5 6 7 8 9 |
USE [Fin_Test_All] ALTER DATABASE [Fin_Test_All] SET RECOVERY SIMPLE go DBCC SHRINKFILE (Finans3_Test_log, 800); ALTER DATABASE [Fin_Test_All] SET RECOVERY FULL go |
Обратите внимание! Что название файла ‘…log’ может отличаться от того, который находится в проводнике! Нужно именно то имя файла (логическое имя), которое указано в параметрах файлов базы:
В противном случае вы получите ошибку ‘…в sys.database_files. Файл не существует или был удален.’
Так же обратите внимание что размер файла указывается в мегабайтах!
Так же о дополнительных вариантах и возможных ошибок при выполнении данной операции можно прочитать в статье с инфостарта!
Всем удачи и поменьше таких ошибок!