Как проверить и исправить базу данных (программным путем)
В этом разделе объясняется, как проверить и восстановить поврежденную базу данных Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) с помощью объекта Engine. Дополнительные сведения об использовании пространства имен SqlServerCe см. в справочной документации по пространству имен SqlServerCe.
Файлы базы данных SQL Server Compact 3.5 разделены на логические блоки размером по 4 килобайта, именуемые страницами. При записи каждой страницы в файл базы данных SQL Server Compact 3.5 вычисляет и сохраняет ее контрольную сумму. Если после записи в файл страница была изменена или повреждена, она уже не соответствует ожидаемой контрольной сумме.
Метод Verify класса System.Data.SqlServerCe.SqlCeEngine заново вычисляет контрольные суммы всех страниц в файле базы данных и проверяет полученные контрольные суммы на соответствие ожидаемым величинам. Если метод возвращает значение true, это означает, что файл базы данных не поврежден. Если возвращено значение false, то файл базы данных поврежден и приложению следует вызвать метод Repair.
Если файл базы данных поврежден, можно попытаться восстановить его с помощью метода Repair объекта SqlCeEngine. Метод Repair служит для просмотра базы данных и вычисления контрольных сумм страниц. Если контрольная сумма не совпадает с суммой, вычисленной в момент записи страницы в базу данных, такая страница считается поврежденной.
Метод Repair можно вызвать с одним из двух приведенных ниже параметров.
- RepairOption.DeleteCorruptedRows
Если вызвать метод восстановления с параметром DeleteCorruptedRows, все поврежденные страницы будут удалены. Это может привести к значительной потере данных в случае, если поврежденная страница содержит схему базы данных. Однако восстановленные в таком режиме данные не будут повреждены. - RepairOption.RecoverCorruptedRows
Если вызвать метод восстановления с параметром RecoverCorruptedRows , будет предпринята попытка считать данные на поврежденных страницах. В результате можно восстановить большее количество данных, но нельзя гарантировать, что в восстановленных данных не будет логических повреждений.
Примечание. |
---|
Метод Repair следует применять, только если SQL Server Compact 3.5 возвращает ошибку с собственным номером ошибки 25017 (SSCE_M_DATABASECORRUPTED) либо метод Verify объекта SqlCeEngine возвращает значение false. |
Процедуры SQL Server Compact 3.5
Проверка базы данных
Создайте объект Engine.
SqlCeEngine engine = new SqlCeEngine("Data Source = AdWks.sdf");
Вызовите метод Verify , чтобы проверить базу данных на наличие поврежденных строк.
if (false == engine.Verify()) {...}
Восстановление базы данных
Если в базе данных имеются поврежденные строки, вызовите метод Repair для исправления неполадок. Чтобы удалить все поврежденные строки, передайте параметр восстановления DeleteCorruptedRows; чтобы попытаться восстановить поврежденные строки, передайте параметр восстановления RecoverCorruptedRows.
engine.Repair(null, RepairOption.RecoverCorruptedRows);
Чтобы создать восстановленную базу данных с учетом регистра, нужно задать свойство учета регистра для строки соединения метода Repair. Дополнительные сведения о базах данных с учетом регистра см. в разделе Работа с параметрами сортировки (SQL Server Compact). Пример.
engine.Repair("Data Source= Test.sdf; LCID= 1033; Case Sensitive=true;", RepairOption.RecoverCorruptedRows);
Пример
В приведенном примере показано, как проверить базу данных SQL Server Compact 3.5, а при обнаружении поврежденных строк — исправить ее путем извлечения данных из этих строк.
SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");
if (false == engine.Verify())
{
MessageBox.Show("Database is corrupted.");
engine.Repair(null, RepairOption.RecoverCorruptedRows);
}
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
См. также
Другие ресурсы
Обслуживание баз данных (SQL Server Compact)
Справка и поддержка
Получение помощи (SQL Server Compact 3.5 с пакетом обновления 1)