다음은 내가 읽은 결과의 모음입니다. 링크 된 블로그 및 문서에서 훨씬 더 많은 정보를 찾을 수 있습니다.
먼저 DBCC CHECKDB
체크섬 또는 torn_page 확인을 끄면 불일치를 감지하지 못할 수 있습니다. 이 게시물 에서 Paul Randal의 인용문 :
당신이 맞습니다-찢어진 페이지 또는 체크섬이 켜져 있지 않으면 페이지 보호 옵션과 관련하여 감지 할 수있는 것이 없습니다. CHECKDB는 여전히 모든 일관성 검사를 수행하여 발견 된 손상을 발견 할 수 있지만 데이터 값 중간에 손상이 표시되지는 않습니다.
Ha-그것은 페이지 체크섬을 켜는 것에 대한 혼란입니다. 페이지를 읽고, 바꾸고, 다시 쓸 때까지 아무 일도 일어나지 않습니다. 페이지가 체크섬을 받도록하는 유일한 방법은 페이지 인덱스를 변경하는 것입니다. 예를 들어, 모든 인덱스를 다시 작성하여 사용할 수없는 경우에는 '터치'도구가 전혀 없습니다.
SQL Server 2000에서 또는 2005 년 이후로 데이터베이스를 업그레이드 한 경우 위 상황이 발생할 수 있습니다. 그런 다음 ALTER DATABASE를 사용하여 페이지 체크섬을 수동으로 활성화해야 활성화됩니다. 그러나 위의 인용문의 두 번째 단락이 시작되어 문제가 될 수 있습니다.
BACKUP WITH CHECKSUM
체크섬 불일치를 감지하지만 페이지에 이미 체크섬이 기록되어있는 경우에만 백업됩니다. 일반적으로 DBCC CHECKDB
이러한 오류도 감지하므로 BACKUP WITH CHECKSUM을 사용하여 DBCC CHECKDB를 바꾸는 것은 좋지 않습니다 .
이제 DBCC CHECKDB
일부가 있어도 불일치를 표시하지 않을 수있는 두 번째 가능성 이 있습니다. 이를 위해 나는 부패 와 관련된 오해 에서 Paul Randal을 다시 인용하고 있습니다. 그것들은 사라질 수 있습니까? :
사라지는 부패는 어떻습니까? 일관성 검사가 작동하는 방식에 도달합니다. 일관성 검사는 할당 된 데이터베이스의 페이지에서만 실행됩니다. 페이지가 어떤 것에도 할당되지 않으면 8192 바이트는 의미가 없으며 해석 할 수 없습니다. 예약 된 것과 할당 된 것 사이에 혼동하지 마십시오. 첫 번째 오해 게시물에서 여기에 설명되어 있습니다. 페이지가 할당되는 한 페이지 체크섬 테스트 (있는 경우)를 포함하여 DBCC CHECKDB가 일관성을 검사합니다. DBCC CHECKDB가 실행될 때 손상된 페이지가 할당 된 경우 다음 DBCC CHECKDB가 실행될 때 할당이 취소되면 손상이 사라지는 것처럼 보일 수 있습니다. 처음으로 손상된 것으로보고되지만 두 번째로 할당되지 않은 경우 일관성을 검사하지 않으며 손상되지 않은 것으로보고되지 않습니다. 부패는 신비스럽게 사라진 것 같습니다. 그러나 그것은 아닙니다-단지 손상된 페이지가 더 이상 할당되지 않는다는 것입니다. 손상된 페이지 할당을 해제하는 SQL Server를 중지하는 것은 없습니다. 실제로 많은 DBCC CHECKDB 복구가 수행하는 작업으로 손상된 부분을 할당 해제하고 모든 링크를 수정합니다.
귀하의 질문에 대한 최종 답변이 없지만 DBCC CHECKDB
할당 된 페이지 만 확인하면 할당 해제 된 페이지에 불일치가 표시되지 않습니다. 내가 지금 상상할 수있는 유일한 상황은 BACKUP이 할당되지 않은 페이지를 백업하여에 의해 건너 뛴 잠재적 체크섬 오류를 보여주는 것 DBCC CHECKDB
입니다.