Транзакция ADO.NET и Транзакция SQL Server 2008 - PullRequest
1 голос
/ 21 января 2010

Если я запускаю хранимую процедуру в ADO.NET с включенной транзакцией и SP начинает свою собственную транзакцию внутри (с помощью COMMIT TRANS). Что происходит при откате транзакции ADO.NET? Откатывается ли транзакция из SP? Находится ли БД в состоянии, как это было до вызова ADO.NET?

Спасибо.

1 Ответ

5 голосов
/ 21 января 2010

Я только что проверил это, используя C # 2008, Sql Server 2005 , используя код, как показано ниже, и он сделал откат .

SqlConnection con = new SqlConnection("server=svr;database=db;uid=user;pwd=pw;Connect Timeout=900");
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "MySp";
con.Open();
SqlTransaction trans = con.BeginTransaction();
cmd.Transaction = trans;
cmd.ExecuteNonQuery();
trans.Rollback();  // or trans.Commit()
con.Close();

Код базы данных

CREATE TABLE [dbo].[TEST](
    [Val] [int] NULL
)

ALTER PROCEDURE MySp
AS 
BEGIN
    BEGIN TRANSACTION T1
    INSERT INTO TEST SELECT 1
    COMMIT TRANSACTION T1
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...