Управление длительными транзакциями
Длительная транзакция может быть одной из причин переполнения журнала. Во время длительной транзакции виртуальный файл журнала, содержащий первую запись транзакции, остается активным. Усечение не может продолжаться в этом виртуальном файле.
Важно! |
---|
Очень длительная транзакция может привести к переполнению журнала транзакций. Дополнительные сведения о том, что нужно делать при переполнении журнала транзакций, см. в разделе Устранение неполадок при переполнении журнала транзакций (ошибка 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).