删除数据时漏写了WHERE,如何恢复?

作者:leen 来源:ITPOW 日期:2005-12-19

要实现误操作恢复,恢复模型不能是“简单”恢复模型,至少是“大容量日志记录”恢复模型,最保险的是“完全”恢复模型(为什么要保险一些,请参见)。另外操作最好在查询分析器里操作,如果使用企业管理器,并且仅有一个事务日志,可能无法正确返回到即时点。

假如你在09:30:00时,删除某个表中的某条记录时忘记写WHERE,结果,所有的记录都已经被删除。幸好你在今天09:00:00对数据库进行了完整备份,并且恢复模型是“完全”恢复模型。这时你要做的是立即禁止他人对数据库的访问,并且备份事务。然后再利用以下语句还原。

restore database f2 from disk='E:\foo' with file=1, move 'foo_data' to 'D:\foo_data.mdf', move 'foo_log' to 'D:\foo_log.ldf', norecovery, replace
restore log f2 from disk='E:\foo' with file=2, stopat='2005-12-18 09:29:59', replace

并于restore的更多语法我们不在这里讨论,我们只说要注意的有两点,第一个还原语句要指明norecovery,表示还原操作不回滚任何未提交的事务,第二个还原语句stop表示还原到这个时间点时的数据库状态(这个点被称为即时点)。

执行上述语句后,我们现在的数据库就是和09:29:59的状态一样了。不过为了数据库的完整性,这之后对数据库的其它修改是无法恢复了,也就是说这之后对数据库的正确操作必须重做。

相关文章