트랜잭션이 성공적으로 커밋 된 경우 데이터베이스와 로그 파일에 트랜잭션이 기록되었는지 100 % 확신 할 수 있습니까? 데이터가 저장되었는지 확인할 수 있습니까?
오늘 로그 파일이 드라이브의 한계에 도달했으며 많은 오류가 발생했습니다. 또한 일부 다른 서비스가 중단되었습니다. 디스크를 늘리고 서버를 다시 시작했습니다.
시작하는 동안 서버가 "데이터베이스 복구"를 수행했습니다. 모든 것이 다시 정상인지 확신 할 수 있습니까?
2
복구가 완료된 후 오류 로그를 확인하여 커밋 된 트랜잭션 수와 롤백 된 수를 확인할 수 있습니다. 이것에 대한 마법의 대답은 없습니다-디스크가 추락하면 그 당시의 트랜잭션 상태에 따라 다릅니다.
—
Aaron Bertrand
@AaronBertrand 그러나 트랜잭션이 "커밋 된"상태 (즉, 커밋에 성공한 경우)에서 복구 중에 여전히 손실 될 수있는 방법은 무엇입니까?
—
SQL Police
@Giosco : 할 수 없습니다. "committed"는 데이터베이스의 로그 파일에 있음을 의미합니다. 그 후 유실하는 유일한 방법은 1) 데이터 파일에 저장되기 전에 로그 파일을 잃어 버리거나 2) 로그 파일과 데이터 파일을 모두 잃어 버리거나 3) 사람의 실수를 잃는 것입니다. 일반적으로 (3)이 가장 비슷합니다.
—
RBarryYoung
@Giosco 전체 드라이브 시점의 모든 거래가 성공적으로 완료되었음을 어떻게 알 수 있습니까?
—
Aaron Bertrand
저장 프로 시저 <> 트랜잭션-저장 프로 시저에는 여러 개의 명시 적 트랜잭션이 있거나 암시 적으로 만 시도 / 캐치 논리가있을 수 있으며 C # 계층에서 트랜잭션 처리가있을 수 있습니다. 담요 진술로 너무 위험 할 수 있습니다.
—
Aaron Bertrand