简体   繁体   English

ADO.NET事务和SQL Server 2008事务

[英]ADO.NET Transaction and SQL Server 2008 Transaction

If i run stored procedure in ADO.NET with transaction enabled and SP begin its own transaction inside(with COMMIT TRANS). 如果我在启用了事务的ADO.NET中运行存储过程,并且SP在内部使用COMMIT TRANS开始自己的事务。 What happens when ADO.NET rollback transaction? ADO.NET回滚事务时会发生什么? Is transaction from SP rollbacked as well? SP的事务也会回滚吗? Is DB in state as it was before calling ADO.NET? DB是否处于调用ADO.NET之前的状态?

Thank you. 谢谢。

I have just tested this using C# 2008, Sql Server 2005 using Code as below and it did rollback . 我刚刚使用C#2008和Sql Server 2005(使用下面的Code)对此进行了测试并且确实进行了回滚

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();

Database code 数据库代码

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

ALTER PROCEDURE MySp
AS 
BEGIN
    BEGIN TRANSACTION T1
    INSERT INTO TEST SELECT 1
    COMMIT TRANSACTION T1
END

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM