Факторы, могущие вызвать задержку усечения журнала

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

ПримечаниеПримечание

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

Записи журнала могут оставаться активными по множеству причин, которые описываются в этом разделе. Чтобы определить, что препятствует усечению журнала транзакций в конкретном случае, используйте столбцы log_reuse_wait и log_reuse_wait_desc представления каталога sys.database.

ПримечаниеПримечание

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

В следующей таблице кратко описываются значения столбцов log_reuse_wait и log_reuse_wait_desc представления каталога sys.database.

Значение столбца log_reuse_wait

Значение столбца log_reuse_wait_desc

Описание

0

NOTHING;

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

1

CHECKPOINT

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

Это широко распространенная причина задержки усечения журнала. Дополнительные сведения см. в разделе Контрольные точки и активная часть журнала.

2

LOG_BACKUP.

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

ПримечаниеПримечание
Резервные копии журналов не препятствуют усечению.

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

3

ACTIVE_BACKUP_OR_RESTORE

Выполняется резервное копирование или восстановление данных (для всех моделей восстановления).

Резервное копирование данных работает аналогично активной транзакции, поэтому его выполнение предотвращает усечение. Дополнительные сведения см. ниже в подразделе «Операции резервного копирования и восстановления данных».

4

ACTIVE_TRANSACTION

Активна одна из транзакций (для всех моделей восстановления).

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

  • Транзакция отложена (только в SQL Server 2005 Enterprise Edition и более поздних версиях). Отложенная транзакция — это активная транзакция, откат которой был заблокирован по причине недоступности какого-либо ресурса. Дополнительные сведения о причинах, вызывающих появление отложенных транзакций, и о том, как их можно вывести из такого состояния, см. в разделе Отложенные транзакции.

5

DATABASE_MIRRORING

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

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

6

REPLICATION

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

Дополнительные сведения см. далее в разделе «Репликации транзакций и журнал транзакций».

7

DATABASE_SNAPSHOT_CREATION

Создается моментальный снимок базы данных (для всех моделей восстановления).

Это очень распространенная (и обычно кратковременная) причина задержки усечения журнала транзакций.

8

LOG_SCAN

Производится просмотр журнала (для всех моделей восстановления).

Это очень распространенная (и обычно кратковременная) причина задержки усечения журнала транзакций.

9

OTHER_TRANSIENT

Эта значение сейчас не используется.

Операции резервного копирования и восстановления данных

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

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

Активные длительные транзакции

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

ПримечаниеПримечание

Дополнительные сведения о том, как предотвратить возникновение длительных транзакций, см. в разделе Кодирование эффективных транзакций.

Зеркальное отображение базы данных и журнал транзакций

Для зеркального отображения базы необходимо, чтобы каждая запись журнала оставалась активной, пока экземпляр основного сервера получает уведомления от экземпляра зеркального сервера о записи на диск. Если экземпляр зеркального сервера начинает отставать от экземпляра основного сервера, то соответствующим образом увеличивается место на диске, занимаемое активным журналом. В этом случае может потребоваться остановка зеркального отображения базы данных, применение к зеркальной базе данных резервной копии журнала, усекающей журнал (с использованием параметра WITH NORECOVERY) и повторный запуск зеркального отображения.

Важное примечаниеВажно!

Более того, перед запуском зеркального отображения потребуется вручную применить все дополнительные резервные копии журнала (обязательно с использованием параметра WITH NORECOVERY), если таковые были созданы после требуемой резервной копии. Зеркальное отображение может быть запущено после применения самой последней резервной копии журнала.

Дополнительные сведения см. в разделах Удаление зеркального отображения базы данных и Настройка зеркального отображения базы данных.

Репликация транзакций и журнал транзакций

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

Кроме этого, если в базе данных публикации или распространителя установлен параметр «синхронизация с резервной копией», то журнал транзакций не усекается до тех пор, пока не будет осуществлено резервное копирование всех транзакций. Если журнал транзакций становится слишком большим и этот параметр установлен, то необходимо рассмотреть сокращение интервалов резервного копирования журнала транзакций. Дополнительные сведения о резервном копировании и восстановлении баз данных, участвующих в репликации транзакций, см. в разделе Стратегии резервного копирования и восстановления из копии репликации моментальных снимков и репликации транзакций.

Управление репликацией

Отслеживание репликации