2010-06-06 127 views
0

我更新了SQL Server 2008中的一个表,意外,我正在通过单元格复制来更新另一个表,但是我覆盖了原始表。有没有一种方法可以恢复我的表格内容?在SQL Server 2008中撤消表更新

回答

4

不。如果您提交了交易,恢复原始表的唯一方法是从最近的备份中获取。

+0

我听说SQL Server中有东西,我猜它叫做事务日志,它包含我所做的所有事务,但我不确定它! – sikas 2010-06-06 16:48:59

+0

@sikas - 你知道你的数据库有什么恢复模式吗? – 2010-06-06 17:26:15

+0

不知道,我怎么知道? – sikas 2010-06-07 16:59:17

1

如果您只有一个备份,然后将其恢复到另一个数据库并移动表(这种方式没有其他表会受到影响)。如果你还有事务日志备份,那么你也可以做一个时间点恢复

+0

我可以找到那些事务日志备份吗? – sikas 2010-06-06 19:10:28

+0

问你的数据库管理员,或者已经设置了这个数据库和备份策略 – SQLMenace 2010-06-06 19:34:23

+0

好吧,我是安装SQL Server的人,我将它安装在我的个人电脑上,而不是公司的一台,但我不知道在哪里找到或这些日志在哪里存储! – sikas 2010-06-07 17:01:01

1

我听说有一些工具可能能够撤销在某些情况下的某些行动。这里有一篇关于如何在这些情况下最小化数据丢失的有趣文章link,它包括一些工具的链接。

您可能想在ServerFault上问这个问题,以及一些系统管理员可能会更好地了解。

-1

检查此链接。它展示了如何使用事务日志

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从日志中恢复值。

注意:一旦意识到意外修改/删除,最好尽快恢复。数据库中发生的操作越多,事务日志值可能被覆盖的概率就越高。