Ошибка SQL «в конце пакета обнаружена незафиксированная транзакция» без транзакций в базе данныхC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка SQL «в конце пакета обнаружена незафиксированная транзакция» без транзакций в базе данных

Сообщение Anonymous »

Я столкнулся со следующей проблемой в разных точках моего кода.
Исключение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»