Исключение SqlException возвращается из БД (SQL Server) с сообщением «Обнаружена нефиксируемая транзакция в конце пакета. Транзакция откатывается» после вызова хранимой процедуры. Структура хранимой процедуры соответствует этому примеру:
Код: Выделить всё
USE [EXAMPLE_DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_ExampleStoredProcedure]
@Parameter INT, @AnotherParameter INT
AS
BEGIN
BEGIN TRY
SET NOCOUNT ON;
DECLARE @Variable INT;
DECLARE @AnotherVariable CHAR;
DECLARE @ErrMsg VARCHAR;
SET @ErrMsg = '';
/*Doing Some Stuff Here (Select, IF-THEN, etc...)
/* I call another stored procedure */
EXECUTE [dbo].[sp_SecondStoredProcedure]
@Param = 'Blabla'
,@Param2 = 'BlaBlaBla'
/*Here I handle some custom output parameters from second stored
procedure to handle errors */
/* Other stuff here */
END TRY
BEGIN CATCH
SET @CustomExitCode = 'XXXXX';
SET @ErrMsg = (SELECT ERROR_MESSAGE());
END CATCH;
END
Я обрабатываю транзакцию на стороне кода (C#) с использованием класса TransactionScope, вызывая различные хранимые процедуры внутри области транзакции, включая приведенную выше (которая является неудачной).
Вопрос: почему SQL говорит о незафиксированной транзакции, если у меня нет транзакций на стороне SQL, а есть только блок try-catch со всеми транзакциями вместо этого выполняются операции с кодом?
Я уже поискал в Интернете и нашел много материалов об ошибке Uncommittable Transaction, но на самом деле везде есть обработка транзакций на стороне SQL.
Надеюсь, я объяснил проблему понятным образом.
Я, очевидно, доступен для любой дополнительной информации.
Большое спасибо за вашу помощь!
С уважением,
Габриэль
Подробнее здесь: https://stackoverflow.com/questions/238 ... without-tr
Мобильная версия