Файл журнала для базы данных заполнен

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

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

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

12 ответов

Решение

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

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

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

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

backup log <dbname> with truncate_only  

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

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

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

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

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

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

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

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

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

Пытаться

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

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

Вы можете проверить связанный вопрос SO:

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

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

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

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

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

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

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

Если дисковое пространство заполнено и вы не можете скопировать журнал на другой компьютер по сети, подключите диск через USB и скопируйте его таким образом.

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

dump tran <db_name> with no_log;

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

Посмотрите здесь: http://support.microsoft.com/kb/272318

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

Переименуй это. например:
старый лог-16-09-08.log

Тогда сервер SQL может использовать новый пустой.

Другие вопросы по тегам