SQL Server에서 트랜잭션을 롤백 2005

SQL 서버 2005 새로 롤백 SQL Server에서 트랜잭션을하는 방법을 intoduced 2005

XACT_ABORT를 ON SET

XACT_ABORT가에있는 경우. T - SQL 구문이 자동으로 롤백 트랜잭션 오류가 문장에서 오류가 발생합니다.

XACT_ABORT를 ON SET

EMP를 사용
트란를 시작
EmpInfo 값에 삽입(1)
EmpInfo 값에 삽입(1) — 이 문장은 기본 키 오류를 일으킬 것입니다
EmpInfo 값에 삽입(2)
커밋 트란

문장의 첫 번째 라인은 오류없이 실행됩니다. 기본 키 오류가 두 번째 줄에 모집합니다. 그러나 전체 블록 트랜잭션이 커밋되지 않을 것이기 때문입니다에 XACT_ABORT.

1 SQL Server에서 트랜잭션을 롤백 댓글 2005

  • noreply@blogger.com (토드)

    당신은 XACT_ABORT가 현재 * 배치 *을 종료해야합니다, 아니라 전체 명령. 배치는 GO 키워드 분리. 실행은 다음 일괄 처리의 시작 부분에 계속됩니다.

    이 기능은 SQL Server에서 또한 2000, 그것은 다양한 오류에 대한 약간 다르게 작동하지만.

    SQL에서 2000, XACT_ABORT가 자동으로 롤백 트랜잭션을 실패 경우가 있습니다.

    예를 들면:

    잘못된 열 이름에 삽입.

    IDENTITY_INSERT OFF로 프라이 머리 키 (primary key)에 삽입.

    존재하지 않는 UDF를 사용하는 SELECT를 실행.

    이러한 유형의 오류는 일반적으로 제대로 작성 명령에 의한 아르, 누군가가 스키마를 바꿀지도 모르겠어 않는 그래서 그들은 프로그램의 일상적인 작업에서 발생하지 않는. 제작 데이터베이스 업데이트 스크립트가 프로젝트의 새로운 버전을 배포할 때 때 나는 그들의 가능성을 고려, 경우를 대비해서 배포의 계획대로되지 않습니다.

    이러한 오류를 처리하는 방법이 있습니다. 당신의 COMMIT은 DML 문장을 수행하는 배치에 있어야. 배치 후 (GO 키워드 이후) 당신은 그것이 0보다 큰 있는지 확인하기 위해 @ @ TRANCOUNT를 확인하고 그에 따라 행동할 수. 보통 ROLLBACK 트랜잭션을.

    거래 배치를 단축, 그래서 당신은 후속 배치에 롤백을 실행할 수.

답변을 남겨주세요

사용할 수있는 이러한 HTML 태그

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>