Подтвердить что ты не робот

Как уменьшить размер файла журнала SQL Server?

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

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

Есть ли способ исправить проблему? Или это единственный путь назад, чтобы отделить базу данных, удалить файл журнала, а затем снова подключиться к новой?

4b9b3361

Ответ 1

Добро пожаловать в непостоянный мир управления журналом SQL Server.

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

В промежутке времени это должно по крайней мере позволить вам убить файл журнала:

  • Выполните полную резервную копию своей базы данных. Не пропустите это. На самом деле.
  • Измените метод резервного копирования вашей базы данных на "Простой"
  • Откройте окно запроса и введите "контрольную точку" и выполните
  • Выполните еще одну резервную копию базы данных
  • Измените метод резервного копирования вашей базы данных на "Полный" (или что бы это было, если он еще не был прост)
  • Выполните окончательную полную резервную копию базы данных.

Теперь вы должны иметь возможность сжимать файлы (если выполнение резервного копирования не сделало этого для вас).

Удачи!

Ответ 2

  • Выполните полное резервное копирование вашей базы данных. Не пропустите это. На самом деле.
  • Измените метод резервного копирования вашей базы данных на "Простой"
  • Откройте окно запроса, введите "контрольную точку" и выполните
  • Выполните еще одну резервную копию базы данных
  • Измените метод резервного копирования вашей базы данных обратно на "Полный" (или каким бы он ни был, если он еще не был простым)
  • Выполните окончательное полное резервное копирование базы данных.
  • Запускайте ниже запросы один за другим
    1. USE Database_Name
    2. select name,recovery_model_desc from sys.databases
    3. ALTER DATABASE Database_Name SET RECOVERY simple
    4. DBCC SHRINKFILE (Database_Name_log , 1)

Ответ 3

  • Убедитесь, что для режима резервного копирования базы данных установлено значение Простой (см. здесь для обзора различных режимов). Это позволит избежать того, что SQL Server ожидает резервной копии журнала транзакций, прежде чем использовать пространство.

  • Используйте dbcc shrinkfile или Management Studio для сжатия файлов журнала.

Шаг №2 ничего не сделает, пока не будет установлен режим резервного копирования.

Ответ 4

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

отключение дБ и удаление файла журнала опасно! не делайте этого, если вам не нужна потеря данных

Ответ 5

У меня была та же проблема, размер моего файла журнала базы данных составлял около 39 гигабайт, а после сжатия (как базы данных, так и файлов) он уменьшился до 37 гигабайт, что было недостаточно, поэтому я сделал это решение: (Мне больше не нужен был файл ldf (файл журнала))

(** Важно): Получите полную резервную копию вашей базы данных перед процессом.

  1. Запустите "контрольную точку" в этой базе данных.

  2. Отключите эту базу данных (щелкните правой кнопкой мыши базу данных и выберите задачи >> Detach...) {если вы видите ошибку, выполните шаги в конце этого текста}

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

  4. Присоедините базу данных (щелкните правой кнопкой мыши на Базы данных и выберите Присоединить...)

  5. В диалоговом окне прикрепления удалите файл .ldf (в котором отображается комментарий "файл не найден") и нажмите кнопку "ОК". (не беспокойтесь, файл ldf будет создан после прикрепления.)

  6. После этого создайте новый файл журнала размером 504 КБ !!!.

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

1. Запустите эту команду на главной базе данных "sp_who2" и посмотрите, какой процесс использует   ваша база данных.

2. прочитать номер процесса, например, 52, и набрать "kill 52", теперь ваш   база данных свободна и готова к отключению.

Если число процессов, использующих вашу базу данных, слишком велико:

1.Откройте службы (введите службы в Windows start) найти SQL Server... процесс  и сбросьте его (щелкните правой кнопкой мыши и выберите сброс).

  1. Сразу нажмите кнопку ОК в диалоговом окне отсоединения (которое показало  ошибка отсоединения ранее).