我无意中更新了我的 SQL Server 2008 中的一个表,我正在通过逐个单元格的复制来更新另一个表,但是我已经覆盖了原始表。有没有办法可以恢复我的表格内容?
5 回答
这个工具说它可以做到,虽然有点贵。有一个试用期,也许这足以让您的数据恢复:
不,如果您提交了事务,恢复原始表的唯一方法是从您的最新备份中获取它。
我听说有一些工具可以在某些情况下撤消某些操作。这是一篇关于如何在这些情况下最大限度地减少数据丢失的有趣文章的链接,其中包含一些工具的链接。
您可能想在 ServerFault 上问这个问题,并且一些系统管理员可能更了解。
如果您只有备份,则将其还原到另一个数据库并仅移动表(这样不会影响其他表)。如果您还有事务日志备份,那么您还可以进行时间点恢复
检查此链接。它显示了如何使用事务日志恢复值
https://www.experts-exchange.com/articles/28199/How-to-recover-deleted-rows-in-SQL-Server.html
本文展示了如果意外发生,我们如何恢复已删除的数据。如果我们知道数据被删除的时间,我们可以恢复已删除的行。我们可以使用 LSN(日志序列号)来实现这一目标。它显示了通过使用 LSN 值检查事务日志来恢复已删除行的示例。对于更新,请使用“LOP_MODIFY_ROW”。
删除行后,使用以下查询检查日志
Select [Current LSN] LSN], [Transaction ID], Operation, Context, AllocUnitName
FROM
fn_dblog(NULL, NULL)
WHERE Operation = 'LOP_DELETE_ROWS'
根据 transactionID 和受影响的行数,过滤结果集。然后用于RESTORE DATABASE
从日志中恢复值。
注意:最好在您意识到意外修改/删除后立即进行此恢复。数据库中发生的操作越多,事务日志值被覆盖的可能性就越大。