2010-01-21 6 views
1

트랜잭션을 사용할 수있는 ADO.NET에서 저장 프로 시저를 실행하면 SP는 내부 트랜잭션 (COMMIT TRANS)을 시작합니다. ADO.NET 롤백 트랜잭션은 어떻게됩니까? SP의 트랜잭션도 롤백됩니까? ADO.NET을 호출하기 전의 상태로 DB가 있습니까?ADO.NET 트랜잭션 및 SQL Server 2008 트랜잭션

감사합니다.

답변

5

난 그냥 다음과 같이 코드를 사용하여이 사용 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 
+2

+1. 그럴 수 밖에 없었습니다. 그러나 실제로 그것을하는 +1! –

+0

나는 벤 추리를하고 싶었다. 그리고 나서 그것을 망쳐 놓고 생각했다. 실제 X-를 보자.) –

관련 문제