Я исследовал быстрый рост журнала транзакций SQL Server 2005, когда обнаружил, что журналы транзакций будут корректно усекаться только в том случае, если для столбца sys.databases "log_reuse_wait" установлено значение 0, что означает, что журнал транзакций не удерживает повторное использование существующего пространства.
Однажды, когда я намеревался сделать резервную копию / усечь файл журнала, я обнаружил, что в этом столбце есть 4 или ACTIVE_TRANSACTION, происходящие в базе данных tempdb. Затем я проверил все открытые транзакции, используя DBCC OPENTRAN ('tempdb') и столбец open_tran из sysprocesses. В результате я не смог найти активных транзакций нигде в системе.
Точны ли настройки в столбце log_reuse_wait? Происходят ли транзакции, которые невозможно обнаружить с помощью методов, описанных выше? Я что-то упускаю из виду?