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 リファレンス ドキュメント)