Любая активная открытая транзакция будет закреплять журнал, предотвращая усечение и, в конечном итоге, вызывая рост. Если вы начинаете транзакцию, записываете в журнал, а затем ждете вечно в надежде, что сообщение в конечном итоге вас разбудит, вы просто закрепили журнал и вызвали его рост.
В последнее время я начал рекомендовать людям избегать ОЖИДАНИЯ в активированной процедуре вместе с петлей. Просто выдайте RECIEVe и все будет готово, позвольте механизму активации зацикливаться для вас (он делает это), а не WAITFOR, просто просто RECEIVE.
Вариант WAITFOR для RECEIVE создает точку сохранения внутри. Это создает журнал (как минимум 3 записи журнала) и действительно фиксирует журнал на месте во время ожидания. Длинный тайм-аут WAITFOR (или, что еще хуже, бесконечный) был бы очень плохой практикой.
WAITFOR (...) TIMEOUT 3600000
проблему? Например, ежечасно.