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


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

В этом разделе рассматриваются возможные ответы на полный журнал транзакций и предполагается, как избежать его в будущем. Если журнал транзакций переполняется, ядро СУБД SQL Server выдает ошибку 9002. Журнал может заполниться, если база данных находится в сети или в восстановлении. Если журнал переполняется при подключенной базе данных, она не отключается, но переходит в режим только для чтения. Если журнал заполняется во время восстановления, СУБД помечает базу данных как РЕСУРС НА ОЖИДАНИИ. В любом случае необходимо вмешательство пользователя, чтобы сделать журнал транзакций доступным.

Реагирование на полный журнал транзакций

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

Это важно

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

Ниже представлены варианты реагирования на полный журнал транзакций:

  • Резервное копирование журнала.

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

  • Перемещение файла журнала на диск с достаточным пространством.

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

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

  • Завершение или прерывание длительной транзакции.

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

Резервное копирование журнала

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

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

Это важно

Если база данных повреждена, см. Tail-Log резервные копии (SQL Server).

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

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

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

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

Это важно

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

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

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

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

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

Если автоматическое увеличение отключено, база данных находится в сети и достаточно места на диске, либо:

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

  • Включите автоматическое увеличение с помощью инструкции 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)