Поделиться через


Устранение неполадок при переполнении журнала транзакций (ошибка 9002)

Изменения: 14 апреля 2006 г.

В этом разделе описаны возможные действия при переполнении журнала транзакций, а также советы о том, как его избежать. Когда журнал транзакций переполняется, в компоненте SQL Server Database Engine происходит ошибка 9002. Журнал может заполниться, когда база данных работает в оперативном режиме или находится в процессе восстановления. Если журнал заполняется, когда база данных находится в оперативном режиме, база данных остается в оперативном режиме, но доступной только для чтения, но не для обновления. Если журнал заполняется, когда база данных находится в процессе восстановления, компонент Database Engine помечает базу данных как RESOURCE PENDING. В любом случае необходимо вмешательство пользователя, чтобы сделать журнал транзакций доступным.

Действия при переполнении журнала транзакций

Ответные действия при переполнении журнала транзакций частично зависят от условий, которые вызвали переполнение журнала. Чтобы определить, что препятствует усечению журнала транзакций в конкретном случае, используйте столбцы log_reuse_wait и log_reuse_wait_desc представления каталога sys.database. Дополнительные сведения см. в разделе sys.databases (Transact-SQL). Описание причин, которые могут задержать усечение журнала, см. в разделе Факторы, вызывающие задержку усечения журнала.

ms175495.note(ru-ru,SQL.90).gifВажно!
Если при возникновении ошибки 9002 база данных находилась в состоянии восстановления, то после устранения проблемы восстановите базу данных с помощью инструкции ALTER DATABASE имя_базы_данных SET ONLINE.

При переполнении журнала транзакций предусмотрены следующие ответные действия:

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

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

ms175495.note(ru-ru,SQL.90).gifПримечание.
Принудительное усечение журнала прерывает цепочку журналов и оставляет базу данных уязвимой до тех пор, пока не будет сделана следующая полная резервная копия. Поэтому параметр TRUNCATE_ONLY будет удален из инструкции BACKUP в будущей версии SQL Server. Избегайте использования данного параметра в новых разработках и запланируйте модификацию приложений, которые сейчас его используют.

Создание резервной копии журнала

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

Создание резервной копии журнала транзакций

ms175495.note(ru-ru,SQL.90).gifВажно!
Если база данных повреждена, см. раздел Резервные копии заключительного фрагмента журнала.

Освободите место на диске

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

Перемещение файла журнала на другой диск

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

ms175495.note(ru-ru,SQL.90).gifВажно!
Файлы журнала ни в коем случае не следует размещать в файловых системах со сжатием.

Перемещение файла журнала

Увеличение размера файла журнала

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

Увеличение размера файла

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

  • Вручную увеличьте размер файла для получения одного шага роста размера файла.
  • Включить свойство автоматического увеличения при помощи инструкции ALTER DATABASE, чтобы установить отличное от нуля значение шага роста для параметра FILEGROWTH.
ms175495.note(ru-ru,SQL.90).gifПримечание.
В любом случае, если достигнут текущий предел размера файла, увеличьте значение MAXSIZE.

Добавление файла журнала на другой диск

Добавьте новый файл журнала базы данных на другом диске, где достаточно места, с помощью инструкции ALTER DATABASE <имя_базы_данных> ADD LOG FILE.

Добавление файла журнала

Идентификация и управление длительной транзакцией

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

См. также

Основные понятия

Создание резервных копий журналов транзакций
Факторы, вызывающие задержку усечения журнала
Обзор моделей восстановления
Знакомство с журналами транзакций
Использование резервных копий журналов транзакций

Другие ресурсы

ALTER DATABASE (Transact-SQL)
Управление журналом транзакций
sp_add_log_file_recover_suspect_db (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Новое содержимое
  • Добавлено описание влияния переполнения журнала транзакций на доступность базы данных.
  • Добавлены сведения об использовании sys.database с целью выявления причин переполнения журнала транзакций.
  • Добавлены сведения об устранении ошибки 9002 из бывшего раздела «Диагностика недостатка места на диске».