Файл журнала для базы данных заполнен - PullRequest
9 голосов
/ 16 сентября 2008

Таким образом, наш SQL Server 2000 выдает мне сообщение об ошибке: «Файл журнала для базы данных заполнен. Создайте резервную копию журнала транзакций для базы данных, чтобы освободить место в журнале».

Как мне исправить это, не удаляя журнал, как упоминали некоторые другие сайты?

Дополнительная информация: Включить AutoGrowth включен на 10% и ограничен до 40 МБ.

Ответы [ 12 ]

17 голосов
/ 16 сентября 2008

Чтобы просто очистить его:

backup log <dbname> with truncate_only  

Чтобы сохранить его где-нибудь:

backup log <dbname> to disk='c:\somefile.bak'

Если вам не нужна история транзакций, попробуйте установить режим восстановления базы данных на простой.

4 голосов
/ 16 сентября 2008

Скотт, как вы уже догадались: усечение журнала - плохой ход, если вы заботитесь о своих данных.

Следующее бесплатное видео поможет вам точно увидеть, что происходит, и покажет, как решить проблему, не урезая журналы. (Эти видео также объясняют, почему это такой опасный взлом и почему вы правы, ища другое решение.)

Вместе эти видео помогут вам точно понять, что происходит, и покажут, хотите ли вы переключиться на ПРОСТОЕ восстановление или посмотреть на фактическое изменение подпрограмм резервного копирования. Есть также несколько дополнительных видеороликов с практическими рекомендациями, которые покажут вам, как точно настроить резервные копии, чтобы обеспечить доступность при управлении размером и размером файла журнала.

2 голосов
/ 17 сентября 2008

ether регулярно делайте резервные копии журналов вашей базы данных, если вам нужно срочно восстановить данные или заняться другими забавными вещами, такими как доставка журналов в будущем, или перевести базу данных в простой режим и сжать файл данных.

НЕ копируйте, не переименовывайте и не удаляйте файл .ldf, это разрушит вашу базу данных, и после восстановления вы можете получить данные в несогласованном состоянии, что сделает их недействительными.

2 голосов
/ 16 сентября 2008

Я не думаю, что переименование или перемещение файла журнала будет работать, когда база данных подключена.

Самое простое, IMO, - открыть свойства базы данных и переключить ее на Simple Recovery Model. затем сожмите базу данных, а затем вернитесь и установите для БД полную модель Recoery (или любую другую модель, которая вам нужна).

Изменение режима ведения журнала вынуждает SQL Server устанавливать контрольную точку в базе данных, после чего сокращение базы данных освобождает избыточное пространство.

1 голос
/ 16 сентября 2008

Вы можете проверить соответствующий вопрос SO:

1 голос
/ 16 сентября 2008

Мой друг, который сталкивался с этой ошибкой в ​​прошлом, рекомендует:

Попробуйте

  • Резервное копирование БД. План обслуживания включает усечение этих файлов.
  • Также попробуйте изменить режим восстановления для БД на Простой (вместо Полный , например)

Причина: Журнал транзакций набухает из-за событий, которые регистрируются (может быть, у вас произошел сбой и откат нескольких транзакций или произошел внезапный пик транзакций на сервере)

0 голосов
/ 11 июня 2012

Мой дорогой друг, очень важно, чтобы администратор БД довольно часто проверял свой лог-файл. Потому что, если вы когда-нибудь не уделите этому большого внимания, он выдаст эту ошибку.

Для этого вам необходимо периодически выполнять резервное копирование, чтобы файл журнала не сталкивался с такой ошибкой.

Кроме этого, приведенное выше предложение совершенно верно.

0 голосов
/ 16 сентября 2008

Как только вы делаете полную резервную копию базы данных, а база данных не использует модель простого восстановления, SQL Server сохраняет полную запись всех транзакций, когда-либо выполненных в базе данных. Это происходит так, что в случае катастрофического сбоя, когда вы теряете файл данных, вы можете восстановить его до точки отказа, сделав резервную копию журнала и, после восстановления старой резервной копии данных, восстановить журнал, чтобы воспроизвести потерянный файл. сделки.

Чтобы предотвратить такое накопление, необходимо создать резервную копию журнала транзакций. Или вы можете разорвать цепочку в текущей точке, используя опции TRUNCATE_ONLY или NO_LOG в BACKUP LOG.

Если вам не нужна эта функция, установите модель восстановления на Simple.

0 голосов
/ 16 сентября 2008

Если это не производственная среда, используйте

dump tran <db_name> with no_log;

После этого сожмите файл журнала, чтобы освободить место на диске. Наконец, переключите режим восстановления базы данных в простой.

0 голосов
/ 16 сентября 2008

У вас есть ответ на ваш вопрос: сделайте резервную копию журнала, тогда он будет сокращен. Составьте план обслуживания для регулярного резервного копирования базы данных и не забудьте выбрать «Резервное копирование журнала транзакций». Таким образом, вы будете держать его маленьким.

...