Использование методов Compact и Shrink
Методы Compact и Shrink в Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) схожи между собой, но различаются способом уменьшения базы данных.
Сжатие и оптимизация базы данных
Метод Compact служит для высвобождения места в файле базы данных. Его можно также использовать для изменения таких параметров настройки базы данных, как пароль и LCID (идентификатор языка и стандартов). При сжатии базы данных создается новый файл базы данных, страницы таблиц реорганизуются так, чтобы они располагались на смежных страницах базы данных, а для высвобождения неиспользуемого места все данные в БД переписываются на новые страницы данных.
Метод Shrink также служит для высвобождения места в файле базы данных. Однако метод Shrink нельзя использовать для изменения параметров настройки базы данных, поскольку метод Shrink не создает новый файл базы данных, а лишь реорганизует записи, удаляя пустые.
Дополнительные сведения о методах Compact и 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)