我在我的一张桌子中插入了一些记录,最多可达5000张。
但现在我意识到这些记录不应该插入此表中。我不能一个一个地删除记录。或者无法区分表中先前记录的插入记录。
如何回滚此insert语句,以便我的表返回其原始格式。
(我认为这是使用日志的方式。但我不知道如何做到这一点。)
感谢。
答案 0 :(得分:2)
以下是您可以尝试的其他一些想法。
在其他数据库中恢复完整备份,然后使用某些第三方工具比较表格,例如ApexSQL Data Diff或dbForge或Red Gate
如果数据库处于完全恢复模式,请尝试读取事务日志。以下是关于此主题的几篇文章:
SQL Server Transaction Log Explorer/Analyzer
答案 1 :(得分:1)
当你这样做时假设你不在交易中,你会发现这个过程很痛苦。不确定你感兴趣的DBMS的味道,但这里有关于SQL Server 2005的一些信息:
Rollback transaction using transaction log
基本上,最简单的方法是从插入之前的备份恢复数据库。
答案 2 :(得分:1)
我猜是insert语句已经提交到数据库,否则你可以简单地做一个ROLLBACK;
你有审计表吗?如果有一个审计表,您将能够识别在特定日期时间插入的行,然后删除它们......
答案 3 :(得分:0)
是否有插入行的任何功能可以将它们与其他所有功能区分开来?例如,是否有插入日期或数字标识列?如果是这样,只需根据该标准进行删除。
除此之外,butterchicken是对的,它可能有点痛苦。但我以前从未使用类似的事务日志回滚。