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


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

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

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

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

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

Длительные транзакции можно обнаружить следующими способами:

  • sys.dm_tran_database_transactions

    Данное динамическое административное представление возвращает сведения о транзакциях на уровне базы данных. Столбцы этого представления содержат сведения о времени первой записи журнала (database_transaction_begin_time), текущем состоянии транзакции (database_transaction_state) и регистрационном номере (LSN) первой записи в журнале транзакций (database_transaction_begin_lsn).

    Дополнительные сведения см. в разделе sys.dm_tran_database_transactions (Transact-SQL).

  • DBCC OPENTRAN

    Эта инструкция позволяет установить идентификатор владельца транзакции, таким образом, можно отследить источник транзакции для более упорядоченной остановки (фиксацией, а не откатом). Дополнительные сведения см. в разделе DBCC OPENTRAN (Transact-SQL).

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

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

Остановка транзакции

Может потребоваться применить инструкцию KILL. Ее следует использовать с осторожностью, особенно если запущены критические процессы. Дополнительные сведения см. в разделе KILL (Transact-SQL).