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

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

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

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


person Scott Gottreu    schedule 16.09.2008    source источник


Ответы (12)


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

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

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

person Michael K. Campbell    schedule 16.09.2008

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

backup log <dbname> with truncate_only  

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

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

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

person TrevorD    schedule 16.09.2008
comment
Параметр TRUNCATE_ONLY для резервного копирования журнала больше не поддерживается в SQL 2008. - person Sean; 20.04.2010

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

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

person Community    schedule 16.09.2008

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

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

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

person cori    schedule 16.09.2008
comment
Более точной терминологией может быть простая модель восстановления. - person SeaDrive; 17.02.2010

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

Пытаться

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

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

person Gishu    schedule 16.09.2008

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

person kristof    schedule 16.09.2008

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

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

person Marc Gear    schedule 16.09.2008

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

person Miroslav Zadravec    schedule 16.09.2008

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

dump tran <db_name> with no_log;

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

person Community    schedule 16.09.2008
comment
Это старый синтаксис, который теперь устарел. РЕЗЕРВНОЕ КОПИРОВАНИЕ - предпочтительный метод. - person Sean Carpenter; 16.09.2008

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

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

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

person Mike Dimmick    schedule 16.09.2008

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

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

В остальном приведенное выше предложение совершенно верно.

person shadab shah    schedule 11.06.2012

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

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

person Fire Lancer    schedule 16.09.2008