Невозможно сжать журнал транзакций, что бы я ни делал - PullRequest
0 голосов
/ 12 ноября 2009

У меня есть база данных, чей tlog вырос до 4,5 ГБ. БД находится в режиме полного восстановления, и я пробовал несколько резервных копий журнала транзакций в сочетании с DBCC сжатый файл. И это не будет уменьшаться. У кого-нибудь есть идеи?

Есть несколько транзакций, которые имеют статус = 2, но в базе данных нет активных транзакций. Интересно, почему они все еще появляются со статусом = 2.

Ответы [ 5 ]

2 голосов
/ 12 ноября 2009
  • Используйте DBCC OPENTRAN для получения открытых транзакций
  • Насколько велик МДФ? если это 5 ГБ или выше, я бы оставил файл журнала
  • Возможно, файл журнала должен быть его большим
  • Когда он растет, он снова фрагментируется
  • Загляните на сайт Paul Randall . Он написал много кода t-log ...

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

1 голос
/ 12 ноября 2009

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

1 голос
/ 12 ноября 2009

Скорее всего, у вас есть одно из следующих:

  • незафиксированная транзакция
  • осиротевшая транзакция
  • длительная операция (например, дефрагментация / перестроение индекса, создание индекса, проверка базы данных, длительный запрос и т. Д.)
  • если вы используете репликацию, нереплицированные транзакции

Есть и другие возможности, но в этой статье kb описаны большинство / все возможные причины и как определить, где они находятся, а также некоторую дополнительную информацию из эта статья в КБ и эта статья в КБ (последняя статья немного устарела, но большинство все еще применяется).

1 голос
/ 12 ноября 2009

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

BACKUP LOG dbname WITH NO_LOG

и затем запустите DBCC SHRINKFILE

Редактировать: не знал, что 2008 удалил их - мы только переключаемся на это. В 2008 году вы должны временно установить простую модель восстановления, затем запустить DBCC SHRINKFILE, а затем снова установить модель восстановления на Full. Код здесь:

http://www.uhleeka.com/blog/2009/08/sql-2008-shrink-log-file-size-with-no_lo/

0 голосов
/ 13 ноября 2009

У нас была работа по записи в базу данных с другого связанного сервера. Он делал огромные удаления. Мы оптимизировали эту работу и смогли успешно сжать файл журнала до 100 МБ.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...