2010-06-15 2 views
0

나는 SqlTransactions에 최대 읽어 봤는데와 같은 사례의 큰 부하가 발견 한 다음에 이 http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=451SqlTransactions가 실행될 때 실행되는 개별 SqlCommand를 어떻게 검사합니까?

내가 들어 BeginTransaction을 수행 할 때,()을 (모든 명령을 실행)하고 문제는 커밋을() 모든 명령 실행 끝내고 구문 오류나 다른 오류가있는 명령은 건너 뜁니다. 이것은 내가 롤백을 실행하고 싶은데 건너 뛰지 말아야합니다. 주제에 대한 기사를 찾았지만 SQL에서는별로 유용하지 않았습니다.

ExecuteNonQuery() 중 하나가 커밋 전에 실패하고 건너 뛰지 않았는지 확인하는 방법이 있습니까? 감사.

답변

0

실수입니다.

  1. 명령을 실행할 때 명령이 실행됩니다. 그들은 지금 당장 변경 사항을 적용하지 않습니다.
  2. 오류가있는 명령은 "건너 뛰기"하지 않습니다. 그들은 실행될 때 예외를 던집니다.

예외가 발생하면 커밋을 실행하지 않고 트랜잭션이 롤백됩니다.

인용 한 바로 그 예가 이것을 보여줍니다. 36 행을 참조하십시오.

+0

이상하게도, 실행 중에 건너 뛰거나 간과 한 것이 틀림 없습니다. 감사. –

+0

아 나는 문제가 어디에 있는지 안다. 내가 그 예제를 발견하기 전에 나는 command.Transaction = myTransaction이없는 것을보고있었습니다. 이제 SQL 구문에 의도적 인 오류를 넣은 후 원래 롤백 할 것이라고 생각 했으므로 작동합니다. –

관련 문제