我尝试从 SQL Server CE 3.5 数据库中的表中删除一些行,然后得到SqlCeException
:
发生了内部错误。[ ID = 3649 ]
我读过这意味着数据库处于损坏状态并且必须修复,尽管关于特定错误的信息很少。
我使用SqlCeEngine.Verify()
它,它返回true
。根据MSDN
如果校验和匹配并且没有数据库损坏,则返回 True;否则为假。
我也使用SqlCeEngine.Repair(null, RepairOption.RecoverCorruptedRows)
; 然后再次尝试删除行,命令执行没有任何错误,行被删除。
我很困惑数据库是否损坏?我认为是(但验证返回 true)。如果它已损坏,它是如何损坏的?我为每个数据库访问创建一个新连接,并且我不在SqlCeConnection
线程之间共享相同的对象(或任何其他 SQL Server CE 相关对象)数据库部署在移动设备上。