Правильно ли я говорю, что в некоторых / большинстве ситуаций такая хранимая процедура оставит транзакции открытыми
Некоторые. Зависит от того, что происходит после. С транзакциями IMPLICIT в SQL Server транзакции не запускаются автоматически, пока вы не запустите запрос, который читает базу данных.
я мог бы просто исправить код, выполнив SET IMPLICIT_TRANSACTIONS OFF
Нет. Это не закончит никаких открытых транзакций.
Обратите внимание, что COMMIT не уменьшает @@ trancount до 0. Он уменьшает его на 1. Таким образом, если у вас несколько операторов BEGIN TRAN или явный BEGIN TRAN после того, как транзакция неявно началась, вам понадобится несколько COMMIT.
Вы можете попробовать
WHILE @@trancount > 0 COMMIT TRANSACTION
которые обязательно совершают любые непогашенные транзакции.