Verify メソッドと Repair メソッドの使用

Verify メソッドと Repair メソッドを使用することで、Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) データベースのデータの整合性を参照し、問題が見つかれば修正できます。詳細については、「Verify メソッドと Repair メソッドの使用」を参照してください。

データベースの確認

SQL Server Compact Edition データベース ファイルは、4 KB 単位の論理的な名前付きページに分割されています。各ページがデータベース ファイルに書き込まれると、SQL Server Compact Edition によってそのページのチェックサムが計算され、保存されます。ファイルに書き込まれた後でページが変更されたり破損した場合、そのページのチェックサムは予想されたものと一致しなくなります。

System.Data.SqlServerCe.SqlCeEngine クラスの Verify メソッドを呼び出すと、データベース ファイル内のすべてのページのチェックサムが再計算され、それらのチェックサムが予想された値と一致するかどうかが検証されます。このメソッドが true を返した場合、データベース ファイルの破損はありません。このメソッドが false を返した場合、データベース ファイルが破損しています。アプリケーションで Repair メソッドを呼び出す必要があります。

データベースの修復

データベース ファイルが破損した場合、SqlCeEngine オブジェクトの Repair メソッドを使用して、データベース ファイルを修復できます。Repair メソッドを使用すると、データベースがスキャンされ、ページ チェックサムが計算されます。このチェックサムが、ページがデータベースに書き込まれたときに計算されたチェックサムに一致しない場合、ページは破損していると見なされます。

Repair メソッドの呼び出しでは 2 つのオプションを使用できます。

  • RepairOption.DeleteCorruptedRows
    DeleteCorruptedRows 値を使用して Repair メソッドを呼び出した場合、すべての破損ページが破棄されます。この場合、破損ページにデータベース スキーマが含まれていると、重要なデータの損失が発生する可能性があります。しかし、このオプションを使って修復したデータには破損が含まれません。
  • RepairOption.RecoverCorruptedRows
    RecoverCorruptedRows 値を使用して Repair メソッドを呼び出した場合、破損ページからのデータの読み取りが試行されます。この場合、より多くのデータが修復されますが、修復されたデータに論理上の破損が含まれている可能性があります。
メモ :
Repair メソッドが役立つのは、SQL Server Compact Edition がネイティブ エラー番号 25017 (SSCE_M_DATABASECORRUPTED) のエラーを返すか、SqlCeEngine オブジェクトの Verify メソッドへの呼び出しで false が返される場合のみです。

説明

次の例では、Verify および Repair メソッドの使用方法を示します。

コード

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 名前空間 (.NET Framework リファレンス ドキュメント)

ヘルプおよび情報

SQL Server Compact Edition のサポートについて