이번에 작업하면서 처음 알게된 내용.
.NET에서 Stored Procedure를 호출할때 로컬 트랜잭션을 걸어서 RollBack/Commit가 가능하다.
SQLConnection 에서 transaction을 생성해서,
Command에 연결해주면 끝.
주의할 점은 실제 SP를 콜하는 부분에
cmd.Transaction = tran; 같이 꼭! 적어줘야 한다.
이부분을 빼먹어서 LocalTransaction 에 대한 에러가 발생하는데, 디버깅이 힘든 환경이라서 좀 애먹은 일이..
간단히 클래스를 만들어서 쓰면 나름 괜찮은 듯
private class TranDB
{
private SqlConnection con;
private SqlTransaction tran;
static string tranName = "WEBTRAN";
public string msg;
public TranDB(string connectionStr)
{
con = new SqlConnection(connectionStr);
}
public void Open()
{
con.Open();
}
public void Close()
{
con.Close();
}
public void BeginTran()
{
tran = con.BeginTransaction(tranName);
}
public void RollBack()
{
tran.Rollback(tranName);
}
public void Commit()
{
tran.Commit();
}
}
Tags: