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

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

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

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

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

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

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

Если при возникновении ошибки 9002 база данных находилась в состоянии восстановления, то после устранения проблемы восстановите базу данных с помощью инструкции ALTER DATABASE database_name SET ONLINE.

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

  • создание резервной копии журнала;

  • освобождение места на диске, чтобы журнал мог автоматически расти;

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

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

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

  • завершение или уничтожение длительной транзакции.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если на диске, на котором находится журнал, доступно свободное место, можно увеличить размер файла журнала. Максимальный объем файлов журнала составляет 2 терабайта (ТБ) на файл журнала.

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

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

  • Вручную увеличьте размер файла для получения одного шага роста размера файла.

  • Включить свойство автоматического увеличения при помощи инструкции ALTER DATABASE, чтобы установить отличное от нуля значение шага роста для параметра FILEGROWTH.

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

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

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

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

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

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

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