Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

backup log <dbname> with truncate_only  

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

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

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

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

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

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

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

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

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

Попробуй

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

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

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

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

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

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

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

dump tran <db_name> with no_log;

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

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

Чтобы предотвратить это накопление, вы должны создать резервную копию журнала транзакций.Или вы можете разорвать цепочку в текущей точке, используя опции TRUNCATE_ONLY или NO_LOG ЖУРНАЛА РЕЗЕРВНОГО КОПИРОВАНИЯ.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top