回滚插入语句

时间:2009-08-26 08:57:57

标签: sql insert rollback

我在我的一张桌子中插入了一些记录,最多可达5000张。

但现在我意识到这些记录不应该插入此表中。我不能一个一个地删除记录。或者无法区分表中先前记录的插入记录。

如何回滚此insert语句,以便我的表返回其原始格式。

(我认为这是使用日志的方式。但我不知道如何做到这一点。)

感谢。

4 个答案:

答案 0 :(得分:2)

以下是您可以尝试的其他一些想法。

在其他数据库中恢复完整备份,然后使用某些第三方工具比较表格,例如ApexSQL Data DiffdbForgeRed Gate

如果数据库处于完全恢复模式,请尝试读取事务日志。以下是关于此主题的几篇文章:

SQL Server Transaction Log Explorer/Analyzer

Read the log file (*.LDF) in sql server 2008

How to view transaction logs in sql server 2008

答案 1 :(得分:1)

当你这样做时假设你不在交易中,你会发现这个过程很痛苦。不确定你感兴趣的DBMS的味道,但这里有关于SQL Server 2005的一些信息:

Rollback transaction using transaction log

基本上,最简单的方法是从插入之前的备份恢复数据库。

答案 2 :(得分:1)

我猜是insert语句已经提交到数据库,否则你可以简单地做一个ROLLBACK;

你有审计表吗?如果有一个审计表,您将能够识别在特定日期时间插入的行,然后删除它们......

答案 3 :(得分:0)

是否有插入行的任何功能可以将它们与其他所有功能区分开来?例如,是否有插入日期或数字标识列?如果是这样,只需根据该标准进行删除。

除此之外,butterchicken是对的,它可能有点痛苦。但我以前从未使用类似的事务日志回滚。