2009-06-08 3 views
7

나는 보통 저장된 procs (BEGIN TRANSACTION .... COMMIT)에서 완전 명시 적 트랜잭션을 사용한다. 방금 코드의 특정 위치에서 "CHECKPOINT"를 대신 사용하는 오래된 코드를 실행했습니다.CHECKPOINT는 TSQL의 COMMIT와 동일하게 작동합니까?

이것은 똑같은 일을하지 않겠습니까? 데이터베이스가 단순 모드에 있더라도 중간에 CHECKPOINTS가 붙어 있어도 모든 것이 여전히 하나의 큰 트랜잭션으로 실행됩니다.

답변

7

CHECKPOINT는/롤백 커밋 상이하며 독립적이다.

이 문서에서는 "SQL Server 2000 I/O Basics"(SQL Server 2005 등에서는 여전히 Ok)을 보여줍니다.

  • 당신은 체크 포인트와 디스크에 쓰기하지만 그 다음에

  • 은 /는 COMMIT BEGIN 롤백 할 수는 복구 모델과는 아무 상관 없다 (전체, 단순, 대량가 기록). TXN은 하나로서 완료되거나 실패해야합니다.

  • 정전이라고 할 때 데이터는 CHECKPOINT로 인해 디스크에있을 수 있지만 커밋되지 않았으므로 데이터베이스가 시작될 때 롤백됩니다.

단순 복구 모델의 경우 예전에는 try and "empty" the log of committed entries이었습니다. CHECKPOINT가 그들을 버렸습니다. FULL 복구 모델의 경우 BACKUP LOG가 필요합니다.

관련 문제