Грешката, която получавате, е защото се връщате назад, без да имате отворена транзакция (имате или вече ангажирани или отменени). Помислете за почистване на структурата на вашата съхранена процедура, опитайте се да изпълните цялата си съхранена процедура като една транзакция и след това да се върнете назад, ако възникне грешка. Можете също да тествате дали е необходимо връщане назад, като проверите дали дадена транзакция е отворена:
BEGIN TRANSACTION;
BEGIN TRY
--execute all your stored proc code here and then commit
COMMIT;
END TRY
BEGIN CATCH
--if an exception occurs execute your rollback, also test that you have had some successful transactions
IF @@TRANCOUNT > 0 ROLLBACK;
END CATCH