을 롤백하지 않습니다TransactionScope에 오류가 나는이 같은 주위 트랜잭션을 사용하여 트랜잭션을
using(TransactionScope tran = new TransactionScope()) {
CallAMethod1();//INSERT
CallAMethod2();//INSERT
tran.Complete();
}
affected rows =-264
를 반환 CallAMethod2();
방법은 그래서 그러나 처음 삽입이 최선을 다하고있다 삽입에 실패!
ambient transaction
으로 작업하는 방법을 알고 싶습니다. 두 번째 방법에 내부 트랜잭션이 필요한 작업이 두 개 이상있는 경우 어떻게해야합니까? 이러한 작업을 내부 트랜잭션에 적용해야합니까? 이 같은 는 :
DAL_Helper.Begin_Transaction();
//------Fill newKeysDictioanry
affectedRow = DBUtilities.InsertEntityWithTrans("table2", newKeysDictioanry, DAL_Helper);
if (affectedRow == 1)
{
if (!string.IsNullOrEmpty(sp_confirm))
{
result_dt = UserTransactionDAL.Run_PostConfirm_SP(sp_PostConfirm, OBJ.ValuesKey, DAL_Helper);
if (result_dt.Rows.Count > 0 && result_dt.Rows[0][0].ToString() == "0")
{
DAL_Helper.current_trans.Commit();
if (DAL_Helper.connectionState == ConnectionState.Open)
{
DAL_Helper.Close_Connection();
}
return 1;// affectedRow;
}
else
{
DAL_Helper.current_trans.Rollback();
if (DAL_Helper.connectionState == ConnectionState.Open)
{
DAL_Helper.Close_Connection();
}
return -2;
}
}
//etc
데이터베이스는 트랜잭션 만들어 졌는지 여부를 알고 계십니까? Informix (Dynamic Server)는 트랜잭션이없고 로그인되고 버퍼에 기록되며 MODE ANSI가 트랜잭션 인 트랜잭션 로그가없는 데이터베이스를 지원합니다. 오류 -264는 임시 파일에 쓸 수 없습니다. 데이터베이스 서버를 실행중인 시스템에 문제가 있는지 여부를 알 수 없습니다. –
@JonathanLeffler : 모르겠다. 이유가 무엇이든 두 번째 삽입 작업이 성공하지 못할 때 트랜잭션이 롤백되지 않는 이유는 무엇입니까? –