Как сжать базу данных (программным путем)
В этом разделе описывается способ сжатия базы данных SQL Server Compact 3.5 вызовом метода Compact объекта SqlServerCe.Engine или метода Shrink объекта SqlServerCe.Engine. Методы Compact и Shrink несколько различаются способом уменьшения размера базы данных.
Метод Compact служит для высвобождения места в файле базы данных. Его можно также использовать для изменения таких параметров базы данных, как пароль и код языка. При сжатии базы данных создается новый файл базы данных, страницы таблиц реорганизуются так, чтобы они располагались на смежных страницах базы данных, а для высвобождения неиспользуемого места все данные в базе данных переписываются на новые страницы данных.
Метод Shrink также служит для высвобождения места в файле базы данных. Однако метод Shrink нельзя использовать для изменения параметров настройки базы данных, поскольку метод Shrink не создает новый файл базы данных, а лишь реорганизует записи, удаляя пустые.
Кроме того, в этом разделе содержатся сведения об использовании метода Compact для изменения настройки учета регистра в базе данных SQL Server Compact.
Дополнительные сведения о методах Compact и Shrink см. в разделе Обслуживание баз данных (SQL Server Compact). Дополнительные сведения об использовании пространства имен SqlServerCe см. в справочной документации по пространству имен SqlServerCe.
Процедуры SQL Server Compact 3.5
Сжатие базы данных
Создайте объект Engine и передайте в него строку соединения с существующей базой данных, которую требуется сжать.
SqlCeEngine engine = new SqlCeEngine("Data Source = AdWks.sdf");
Вызовите метод Compact. При вызове метода Compact можно также задать новые свойства базы данных, например включить защиту паролем и шифрование.
engine.Compact("Data Source=; Password = <enterStrongPasswordHere>");
Сжатие базы данных
Создайте объект Engine и в строке соединения передайте его в базу данных, которую требуется оптимизировать.
SqlCeEngine engine = new SqlCeEngine("Data Source = AdWks.sdf");
Вызовите метод Shrink.
engine.Shrink();
Изменение учета регистра в сжатой базе данных
Создайте объект Engine и передайте в него строку соединения с существующей базой данных, которую требуется сжать.
SqlCeEngine engine = new SqlCeEngine("Data Source= Test.sdf; LCID= 1033");
Вызовите метод Compact. При вызове метода Compact можно также задать новые свойства базы данных, например учет регистра. Если параметр «Case Sensitive» при вызове метода Compact не указать, значение этого свойства не изменится.
engine.Compact("Data Source= Test.sdf; LCID= 1033; Case Sensitive=true");
Примечание. |
---|
Учет регистра появился в SQL Server Compact 3.5. Дополнительные сведения см. в разделе Работа с параметрами сортировки (SQL Server Compact). |
Пример
Приведенный в примере код сжимает существующую базу данных SQL Server Compact 3.5 и показывает, как должны быть изменены свойства базы данных.
SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");
// Specify null destination connection string for in-place compaction
//
engine.Compact(null);
// Specify connection string for new database options
//
engine.Compact("Data Source=; Password =<enterStrongPasswordHere>");
Dim engine As New SqlCeEngine("Data Source = AdventureWorks.sdf")
' Specify null destination connection string for in-place compaction
engine.Compact(Nothing)
' Specify connection string for new database options
'
engine.Compact("Data Source=; Password =<enterStrongPasswordHere>")
Приведенный в примере код оптимизирует существующую базу данных SQL Server Compact 3.5.
SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");
engine.Shrink();
Dim engine As New SqlCeEngine("Data Source = AdventureWorks.sdf")
engine.Shrink()
В следующем примере показано применение метода Compact для изменения свойства учета регистра SQL Server Compact. Затем в данном примере кода вызывается метод GetDatabaseInfo для получения языкового стандарта, метода шифрования и значения учета регистра, соответствующих этой базе данных.
// Default case-insentive connection string.
string connStringCI = "Data Source= Test.sdf; LCID= 1033";
// Set "Case Sensitive" to true to change the collation from CI to CS.
string connStringCS =
"Data Source= Test.sdf; LCID= 1033; Case Sensitive=true";
if (File.Exists("Test.sdf"))
{
File.Delete("Test.sdf");
}
SqlCeEngine engine = new SqlCeEngine(connStringCI);
// The collation of the database is case-insensitive.
engine.CreateDatabase();
// The collation of the database will be case-sensitive because of
// the new connection string used by the Compact method.
engine.Compact(connStringCS);
SqlCeConnection conn = null;
conn = new SqlCeConnection(connStringCS);
conn.Open();
//Retrieve the connection string information - notice the 'Case
// Sensitive' value.
List<KeyValuePair<string, string>> dbinfo = conn.GetDatabaseInfo();
Console.WriteLine("\nGetDatabaseInfo() results:");
foreach (KeyValuePair<string, string> kvp in dbinfo)
{
Console.WriteLine(kvp);
}
' Default case-insentive connection string.
Dim connStringCI As String = "Data Source= Test.sdf; LCID= 1033"
' Set "Case Sensitive" to true to change the collation from CI to CS.
Dim connStringCS As String = "Data Source= Test.sdf; LCID= 1033; Case Sensitive=true"
If File.Exists("Test.sdf") Then
File.Delete("Test.sdf")
End If
Dim engine As New SqlCeEngine(connStringCI)
' The collation of the database is case insensitive.
engine.CreateDatabase()
' The collation of the database will be case sensitive because of
' the new connection string used by the Compact method.
engine.Compact(connStringCS)
Dim conn As SqlCeConnection = Nothing
conn = New SqlCeConnection(connStringCS)
conn.Open()
'Retrieve the connection string information - notice the 'Case Sensitive' value.
Dim dbinfo As List(Of KeyValuePair(Of String, String)) = conn.GetDatabaseInfo
Console.WriteLine(vbNewLine & "GetDatabaseInfo() results:")
Dim kvp As KeyValuePair(Of String, String)
For Each kvp In dbinfo
Console.WriteLine(kvp)
Next
См. также
Другие ресурсы
Обслуживание баз данных (SQL Server Compact)
Основные задачи баз данных (SQL Server Compact)
Справка и поддержка
Получение помощи (SQL Server Compact 3.5 с пакетом обновления 1)