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 参考文档)