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


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

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

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

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

Важно!

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

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

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

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

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

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

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

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

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

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

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

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

Важно!

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

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

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

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

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

Важно!

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

См. также:

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