在SQL Server 2008中撤消表更新
问题描述:
我更新了SQL Server 2008中的一个表,意外,我正在通过单元格复制来更新另一个表,但是我覆盖了原始表。有没有一种方法可以恢复我的表格内容?在SQL Server 2008中撤消表更新
答
不。如果您提交了交易,恢复原始表的唯一方法是从最近的备份中获取。
答
我听说有一些工具可能能够撤销在某些情况下的某些行动。这里有一篇关于如何在这些情况下最小化数据丢失的有趣文章link,它包括一些工具的链接。
您可能想在ServerFault上问这个问题,以及一些系统管理员可能会更好地了解。
答
这个工具说它可以做到,虽然有点昂贵。有一个试用期,也许这将是足够长的时间让您的数据备份:
答
检查此链接。它展示了如何使用事务日志
https://www.experts-exchange.com/articles/28199/How-to-recover-deleted-rows-in-SQL-Server.html
文章表明,如果发生意外,我们如何能恢复被删除的数据恢复值。如果我们知道删除数据的时间,我们可以恢复已删除的行。我们可以使用LSN(日志序列号)来实现这个目标。它显示了通过使用LSN值检查事务日志来恢复已删除行的示例。更新使用'LOP_MODIFY_ROW'。
删除行后使用基于TRANSACTIONID以下查询
Select [Current LSN] LSN], [Transaction ID], Operation, Context, AllocUnitName
FROM
fn_dblog(NULL, NULL)
WHERE Operation = 'LOP_DELETE_ROWS'
和受影响的行数检查日志,筛选结果集。然后使用RESTORE DATABASE
从日志中恢复值。
注意:一旦意识到意外修改/删除,最好尽快恢复。数据库中发生的操作越多,事务日志值可能被覆盖的概率就越高。
我听说SQL Server中有东西,我猜它叫做事务日志,它包含我所做的所有事务,但我不确定它! – sikas 2010-06-06 16:48:59
@sikas - 你知道你的数据库有什么恢复模式吗? – 2010-06-06 17:26:15
不知道,我怎么知道? – sikas 2010-06-07 16:59:17