Compact メソッドと Shrink メソッドの使用

Compact および Shrink メソッドは、Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) のメソッドに似ていますが、データベース サイズを小さくする方法が少し異なっています。

データベースの最適化と圧縮

Compact メソッドは、データベース ファイルの領域を再利用するために使用します。また、パスワードやロケール ID (LCID) 設定などのデータベース設定を変更する場合にも使用できます。データベースを最適化すると、新しいデータベース ファイルが作成され、隣接するデータベース ページ内に格納されるようにテーブル ページが再構成されます。すべてのデータが新しいデータ ページに書き込まれることによって未使用領域が再利用されます。

データベース ファイルの領域の再利用には、Shrink メソッドも使用できます。ただし、Shrink メソッドはレコードを再構成して空のレコードを削除するだけで、新しいデータベース ファイルを作成しないので、データベース設定の変更には使用できません。

最適化と圧縮の詳細については、「データベースの保守 (SQL Server Compact Edition)」を参照してください。

次の例では、一時データベース ファイルが作成され、Compact メソッドによりソース データベースのデータが一時データベースに転送されてから、ソース データベースが一時データベースによって置き換えられています。終了結果のデータベースは、元のデータベースと名前は同じですが、データが最適化されています。

C#

        string src     = "MyDB.sdf";
        string dest    = "MyDB.sdf.tmp";
      // Initialize SqlCeEngine object.
      SqlCeEngine engine = new SqlCeEngine("Data Source = " + src);

      try {
         engine.Compact("Data Source = " + dest);
         engine.Dispose();
        
          File.Delete(src);
          File.Move(dest, src);
      }
      catch(SqlCeException e) 
      {
         //Use your own error handling routine.
         //ShowErrors(e);
      }
      finally 
      {
         //Dispose of the SqlCeEngine object.
         engine.Dispose();
      }

Visual Basic

    Dim src  As String = "MyDB.sdf"
    Dim dest As String = "MyDB.sdf.tmp"
    ' Initialize SqlCeEngine Object.      
    Dim engine As New SqlCeEngine("Data Source = " + src)

    Try
        engine.Compact(("Data Source = " + dest))
        engine.Dispose()
      
        File.Delete(src)
        File.Move(dest, src)

    Catch e As SqlCeException
    'Use your own error handling routine.
    'ShowErrors(e)
    Finally
        'Dispose of the SqlCeEngine object.
         engine.Dispose()
    End Try

参照

関連項目

System.Data.SqlServerCe 名前空間オブジェクト
System.Data.SqlServerCe 名前空間 (.NET Framework リファレンス ドキュメント)

ヘルプおよび情報

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