Repair 메서드
손상된 데이터베이스를 복구합니다.
네임스페이스: System.Data.SqlServerCe
어셈블리: System.Data.SqlServerCe.dll의 System.Data.SqlServerCe
구문
‘선언
Public Sub Repair ( _
connectionString As String, _
options As RepairOption _
)
‘사용 방법
Dim instance As SqlCeEngine
Dim connectionString As String
Dim options As RepairOption
instance.Repair(connectionString, options)
public void Repair(
string connectionString,
RepairOption options
)
public:
void Repair(
String^ connectionString,
RepairOption options
)
member Repair :
connectionString:string *
options:RepairOption -> unit
public function Repair(
connectionString : String,
options : RepairOption
)
매개 변수
- connectionString
형식: System. . :: . .String
데이터베이스에 대한 로컬 연결 문자열입니다.
- options
형식: System.Data.SqlServerCe. . :: . .RepairOption
데이터베이스를 복구할 때 사용할 RepairOption입니다.
주의
복구 메서드가 RepairOption의 DeleteCorruptedRows 값을 사용하여 호출될 경우 손상된 모든 페이지가 데이터베이스에서 삭제됩니다. 그 결과 많은 양의 데이터가 손실될 수 있으나 이 옵션을 사용하여 복구된 데이터는 손상되지 않습니다.
복구 메서드가 RepairOption의 RecoverCorruptedRows 값을 사용하여 호출될 경우 데이터베이스는 손상된 페이지에서 데이터를 읽으려고 시도합니다. 이렇게 되면 더 많은 데이터를 복구할 수는 있지만 복구되는 데이터가 손상되지 않도록 보장하지는 못합니다.
참고
SQL Server Compact 3.5 서비스 팩 1(SP1)부터는 이 메서드를 사용하여 데이터 정렬이 대/소문자를 구분하는 복구된 데이터베이스를 만들 수 있습니다. Repair 메서드에서 연결 문자열 속성 CaseSensitive를 false로 설정하면 대/소문자를 구분하는 데이터베이스에 대/소문자를 구분하는 인덱스가 들어 있는 경우 코드가 성공적으로 실행되어도 대/소문자 구분이 되지 않기 때문에 복구 로그에서 인덱스 오류가 발생할 수 있습니다. 별개의 두 레코드가 같은 것으로 취급될 때 이 오류가 발생합니다. 이러한 레코드의 예로 'aaa'와 'aaA'를 들 수 있습니다. 인덱스를 만들지 못했다는 내용의 메시지가 복구 로그 파일에 기록됩니다.
예제
Dim engine As New SqlCeEngine("Data Source = AdventureWorks.sdf")
' Specify null destination connection string for in-place repair
'
engine.Repair(Nothing, RepairOption.DeleteCorruptedRows)
SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");
// Specify null destination connection string for in-place repair
//
engine.Repair(null, RepairOption.DeleteCorruptedRows);