1
如果我在ADO.NET中運行存儲過程並啓用事務並且SP在內部(使用COMMIT TRANS)開始自己的事務。 ADO.NET回滾事務時會發生什麼?來自SP的事務也回滾了嗎? 數據庫處於調用ADO.NET之前的狀態嗎?ADO.NET事務和SQL Server 2008事務
謝謝。
如果我在ADO.NET中運行存儲過程並啓用事務並且SP在內部(使用COMMIT TRANS)開始自己的事務。 ADO.NET回滾事務時會發生什麼?來自SP的事務也回滾了嗎? 數據庫處於調用ADO.NET之前的狀態嗎?ADO.NET事務和SQL Server 2008事務
謝謝。
我剛纔測試了使用這個代碼使用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
+1。必須如此,對。但實際上是+1! – 2010-01-21 13:03:06
我想冒險猜測,然後想到擰它,讓我們看看真正的X - )。 – 2010-01-21 13:11:23