Предоставляет ли SqlCommand с типом StoredProcedure внешнюю транзакцию?

У меня есть этот код для вызова хранимой процедуры:

 //SqlConnection connection = ...;

 using (SqlCommand command = connection.CreateCommand())
 {
     command.CommandType = CommandType.StoredProcedure; 
     command.CommandText = "usp_MyProc";
     command.ExecuteNonQuery();
 }

и хранимая процедура выглядит следующим образом:

CREATE PROCEDURE [dbo].[usp_MyProc]
AS
BEGIN
BEGIN TRAN
    -- SOME STATEMENTS IN HERE
COMMIT TRAN
RETURN 0
END

Контролируется ли транзакция BEGIN TRAN а также COMMIT TRAN заявления или есть какая-то внешняя транзакция, вызванная SqlCommand учебный класс?

1 ответ

Решение

SqlCommand не генерирует автоматическую транзакцию.

Зависит ли транзакция хранимой процедуры от того, существует ли уже открытая транзакция в момент выполнения команды SQLCommand.

Если нет открытой транзакции, то BEGIN TRANS..COMMIT TRANS в хранимой процедуре контролирует транзакцию.

Другие вопросы по тегам