繁体   English   中英

ADO.NET事务和SQL Server 2008事务

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

如果我在启用了事务的ADO.NET中运行存储过程,并且SP在内部使用COMMIT TRANS开始自己的事务。 ADO.NET回滚事务时会发生什么? SP的事务也会回滚吗? DB是否处于调用ADO.NET之前的状态?

谢谢。

我刚刚使用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();

数据库代码

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