如何撤消SQL Server 2005中的删除操作?

时间:2008-10-14 15:00:32

标签: sql-server-2005 transaction-log

我们的测试数据库突然缺少行。我们希望他们回来。

有没有办法筛选今天发生在数据库中的所有内容?每个SQL语句?我假设这种东西在事务日志中,但我不确定如何查看它。

有没有办法撤消删除操作?

顺便说一句:是的,我们确实有备份,但也希望找到删除的原因......

6 个答案:

答案 0 :(得分:2)

[迟到的答案,但希望有用]

有一种方法可以使用事务日志恢复已删除的行,但前提是您使用的是第三方工具,并且只有您的数据库处于完全恢复模式。

戴尔(以前称为Quest)有Toad for SQL Server,ApexSQL有ApexSQL LogApexSQL Recover,它们还可以读取t-log并恢复数据。不幸的是,Red Gate的Log Rescue只能读取SQL Server 2000上的日志。

还有一种方法可以使用未记录的dbcc log命令读取t-log。查看更多详情here

考虑到您已经拥有数据库备份,您可以在单独的数据库中恢复它们,然后使用市场上存在的许多数据比较工具之一将缺失的数据插入生产数据库。当然,这只能在创建备份之前恢复数据删除。

答案 1 :(得分:1)

您可以使用Red Gate的某些工具执行此操作,但需要付费。看看SQL Log Rescue

否则,我很想恢复。

答案 2 :(得分:1)

您需要第三方工具才能执行此操作。该工具必须能够进入事务日志并查看日志条目,以便您可以查看发生的情况。我没有使用过任何这些工具,但我会为初学者尝试Red Gate的SQL Log Rescue。试一试:

http://www.red-gate.com/products/SQL_Log_Rescue/index.htm

答案 3 :(得分:1)

我会给ChronicDB一个尝试,它有一个免费版本而不是支付红门

http://chronicdb.com/blogs/undelete_from_whoops

答案 4 :(得分:0)

here

所述

SQL数据库恢复工具修复工具还从损坏的SQL数据库中恢复已删除的表记录。您可以还原所有已删除的记录,而不会影响现有的表数据和原始层次结构。它还允许将恢复的数据保存在原始表下方的新创建的表中。这有助于区分新表和原始表中恢复的已删除记录。

答案 5 :(得分:-1)

您可以在SQL Server中使用Rollback命令撤消事务。但是,如果事务是在Begin事务中执行的,您需要知道事务可以回滚。