나는 전에이 문제를 겪었다.
- 큰 데이터베이스와 작은 로그 드라이브가 있습니다. 여러 가지 이유로 재구성을 원합니다.
- 큰 조각난 테이블에서이 작업을 시도하면 로그 드라이브가 가득 찰 때까지 로그가 채워지고 명령이 중단됩니다.
- 단순 모드 인 경우 다음 체크 포인트에서 로그가 지워질 때까지 다른 트랜잭션이 실패 할 수 있으며 전체 모드 인 경우 다음 로그 백업까지 다른 트랜잭션이 실패 할 수 있습니다. 정전!
- 전체 모드 인 경우 로그 백업 빈도가 증가하지만 재구성이 암시 적 트랜잭션에서 수행되므로 문제를 피하는 데 도움이되지 않습니다. 트랜잭션이 완료되거나 중단되거나 중지 될 때까지 로그가 지워지지 않습니다.
- 그리고 당신은 정말로 그 재구성이 완료되기를 원합니다.
재구성을 중단하면 중단 된 부분부터 계속할 수 있다는 것을 알기 때문에 중단은 롤백이 아니라 트랜잭션을 커밋한다는 것입니다.
여기 당신이하는 일이 있습니다. 조금 길지만 간단합니다.
'재구성'작업이 시작되고 로그가 채워지기 시작합니다. 로그가 꽉 찼을 때 다른 작업을 실행하는 WMI 경고 (약 30 초 이내)를 트리거하여 '재구성'작업이 실행 중이고 오류가 발생했을 가능성이 있음을 확인합니다. 그런 다음 '재구성'을 중지하고 백업을 수행 한 후 로그 여유 공간이 적절한 값으로 돌아 왔는지 확인한 다음 '재구성'작업을 다시 시작하여 중단 된 부분을 선택합니다.
따라서이 시나리오에서 로그 크기를 합리적인 크기로 미리 조정하는 이유는 증가 / 트리거 / 작업 / 중지 / 다시 시작 횟수를 줄여서보다 효율적이고 공간을 충분히 확보 할 수 있기 때문입니다. 때때로 잡히지 않는 성장.
이것은 이상한 시나리오입니다. 나는 몇 년 전에이 문제에 봉착했을 것이라고 확신하며 여기에는 근본적인 근본적인 문제가 있습니다. 그러나 수백 대의 서버를 처리하는 경우 MacGyvering이 작업을 수행하는 임시 솔루션을 제외하고 어떤 이유로 든 처리 할 수없는 이와 같은 몇 가지 경우가 발생할 수 있습니다.
안전하고, 논리적이며, 테스트되고, 잘 문서화되어 있으면 문제가 없습니다.