使用 Verify 和 Repair 方法

Verify 和 Repair 方法允许您查看 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 数据库的数据完整性并修复问题(如果发现任何问题)。有关详细信息,请参阅使用 Verify 和 Repair 方法

验证数据库

SQL Server Compact Edition 数据库文件被划分为以 4 KB 为单位的逻辑页面。当每个页面被写入数据库文件时,SQL Server Compact Edition 将计算并保存该页的校验和。如果在写入到文件后,页面被修改或损坏,它将不再匹配其预期的校验和。

调用 System.Data.SqlServerCe.SqlCeEngine 类的 Verify 方法会重新计算数据库文件中每个页面的校验和,并验证校验和是否匹配它们的预期值。如果该方法返回 True,则表明没有数据库文件损坏。如果该方法返回 False,则表明数据库文件已经损坏,而应用程序应该调用 Repair 方法。

修复数据库

如果数据库文件已经损坏,您可以使用 SqlCeEngine 对象的 Repair 方法尝试恢复数据库文件。Repair 方法会扫描数据库并计算页面校验和。如果校验和不匹配以前在页面写入到数据库时计算的校验和,那么会认为该页面已经损坏。

在调用 Repair 方法时,有两个选项:

  • RepairOption.DeleteCorruptedRows
    如果修复方法是利用 DeleteCorruptedRows 值调用的,那么所有损坏的页面都会被丢弃。如果损坏的页面包含数据库架构,这可能会引起大量数据丢失。但是,使用该选项恢复的数据应该不会损坏。
  • RepairOption.RecoverCorruptedRows
    如果修复方法是使用 RecoverCorruptedRows 值调用的,那么数据库将尝试从损坏的页面中读取数据。这可能会恢复更多的数据,但是不能保证恢复的数据没有遭受逻辑损坏。
注意:
只有在 SQL Server Compact Edition 返回带有本机错误号 25017 (SSCE_M_DATABASECORRUPTED) 的错误时,或调用 SqlCeEngine 对象的 Verify 方法返回 false 时,Repair 方法才十分有用。

示例

说明

下面的示例说明如何使用 Verify 和 Repair 方法:

代码

C#

SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");
        if (false == engine.Verify())
        {
            MessageBox.Show("Database is corrupted.");
            engine.Repair(null, RepairOption.RecoverCorruptedRows);
        }
  

代码

Visual Basic

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

请参阅

参考

System.Data.SqlServerCe 命名空间对象
System.Data.SqlServerCe 命名空间(.NET Framework 参考文档)

帮助和信息

获取 SQL Server Compact Edition 帮助