Способ разрешения подсчета транзакций после выполнения указывает на несоответствие числа операторов BEGIN и COMMIT. Предыдущее количество = 1, текущее значение счетчика = 0.
Привет,
У меня есть хранимая процедура, которая также вызывает много вложенных процедур.
Недавно я добавил транзакцию и получаю сообщение ниже
'
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0.'
Не могли бы вы предложить возможное предложение?
большое спасибо
Моя структура процедуры выглядит следующим образом
CREATE Procedure [dbo].[My_Main_PROC] @RequestId UNIQUEIDENTIFIER, @DOCUMENT XML AS */ BEGIN SET NOCOUNT ON; DECLARE @transtate BIT IF @@TRANCOUNT = 0 BEGIN SET @transtate = 1 BEGIN TRANSACTION transtate END BEGIN TRY ...... ...... EXEC [dbo].[PROC_FirstNestedPRoc] ; ...... ...... EXEC [dbo].[PROC_SecondNEstedProc] ; ...... ...... EXEC [dbo].[PROC_ThirdNestedPRoc] ; .... ..... IF @transtate = 1 AND XACT_STATE() = 1 COMMIT TRANSACTION transtate END TRY BEGIN CATCH DECLARE @Error_Message VARCHAR(5000) DECLARE @Error_Severity INT DECLARE @Error_State INT SELECT @Error_Message = ERROR_MESSAGE() SELECT @Error_Severity = ERROR_SEVERITY() SELECT @Error_State = ERROR_STATE() IF @transtate = 1 AND XACT_STATE() <> 0 ROLLBACK TRANSACTION RAISERROR (@Error_Message, @Error_Severity, @Error_State) END CATCH END
Что я уже пробовал:
Я попытался удалить транзакцию, она работает, но когда я применил транзакцию, произошла та же ошибка
ZurdoDev
Вероятно, у вас есть commit tran внутри одного из других хранимых процессов.