다음을 통해 공유


Verify 및 Repair 메서드 사용

VerifyRepair 메서드를 사용하면 Microsoft SQL Server 2005 Compact Edition(SQL Server Compact Edition) 데이터베이스의 데이터 무결성을 확인하고 문제가 있는 경우 해결할 수 있습니다. 자세한 내용은 Verify 및 Repair 메서드 사용을 참조하십시오.

데이터베이스 확인

SQL Server Compact Edition 데이터베이스 파일은 4KB 논리 단위로 명명되는 페이지로 나뉩니다. 각 페이지가 데이터베이스 파일에 기록될 때 SQL Server Compact Edition 는 해당 페이지에 대한 체크섬을 계산하고 저장합니다. 페이지가 파일에 기록된 후 수정되거나 손상되면 필요한 체크섬과 더 이상 일치하지 않게 됩니다.

System.Data.SqlServerCe.SqlCeEngine 클래스의 Verify 메서드를 호출하면 데이터베이스 파일의 모든 페이지에 대한 체크섬을 다시 계산하고 체크섬이 예상 값과 일치하는지 확인합니다. 이 메서드에서 true를 반환하면 손상된 데이터베이스 파일이 없습니다. 그러나 이 메서드에서 false를 반환하면 손상된 데이터베이스 파일이 있으며 응용 프로그램에서 Repair 메서드를 호출해야 합니다.

데이터베이스 복구

데이터베이스 파일이 손상되었으면 SqlCeEngine 개체의 Repair 메서드를 사용하여 해당 데이터베이스 파일을 복구할 수 있습니다. Repair 메서드는 데이터베이스를 분석하여 페이지 체크섬을 계산합니다. 체크섬이 이전에 페이지가 데이터베이스에 기록될 때 계산된 체크섬과 일치하지 않으면 해당 페이지가 손상된 것으로 간주합니다.

Repair 메서드를 호출할 경우 다음과 같은 두 가지 옵션이 있습니다.

  • RepairOption.DeleteCorruptedRows
    DeleteCorruptedRows 값으로 Repair 메서드를 호출하면 손상된 페이지가 모두 무시됩니다. 손상된 페이지에 데이터베이스 스키마가 있는 경우 중요한 데이터가 손실될 수 있습니다. 그러나 이 옵션을 사용하여 복구된 데이터에는 손상이 없어야 합니다.
  • RepairOption.RecoverCorruptedRows
    RecoverCorruptedRows 값으로 Repair 메서드를 호출하면 데이터베이스에서 손상된 페이지의 데이터를 읽으려고 합니다. 이렇게 하면 더 많은 데이터를 복구할 수는 있지만 복구된 데이터의 논리 손상이 없음을 보장하지 않습니다.

[!참고] Repair 메서드는 SQL Server Compact Edition 에서 SSCE_M_DATABASECORRUPTED 오류(원시 오류 번호 25017)를 반환하거나 SqlCeEngine 개체의 Verify 메서드에 대한 호출에서 false를 반환하는 경우에만 유용합니다.

설명

다음 예에서는 VerifyRepair 메서드의 사용 방법을 보여 줍니다.

코드

C#

SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");
        if (false == engine.Verify())
        {
            MessageBox.Show("Database is corrupted.");
            engine.Repair(null, RepairOption.RecoverCorruptedRows);
        }
  

코드

Visual Basic

Dim engine As New SqlCeEngine("Data Source = AdventureWorks.sdf")
        If False = engine.Verify() Then
            MessageBox.Show("Database is corrupted.")
            engine.Repair(Nothing, RepairOption.RecoverCorruptedRows)
        End If

참고 항목

참조

System.Data.SqlServerCe 네임스페이스 개체
System.Data.SqlServerCe Namespace(.NET Framework 참조 설명서)

도움말 및 정보

SQL Server Compact Edition 지원 정보 보기