脚本使用以下查询意外删除了数据库中的几行:
DELETE FROM that_table WHERE id IN (100, 101, 102)
同时添加了更多行。有没有办法让我将三行恢复到同一个表(或者可能是另一个数据库/表)?我不想恢复数据库,就好像这意味着我丢失了在该查询之后添加/更新的所有数据。输入缺失行的手是一种选择。
答案 0 :(得分:1)
您可以使用ApexSQL Log,这是一个SQL Server审核和恢复工具,可以从数据库事务日志中读取信息,并为DML和DDL操作提供撤消T-SQL脚本。
免责声明:我在ApexSQL担任产品支持工程师
答案 1 :(得分:0)
当你在SQL Server 2000上时,你可能会很幸运,因为免费的Redgate SQL Log Rescue Tool适用于这个版本。
答案 2 :(得分:0)
幸运的是我有一个备份,所以我使用这里描述的过程来恢复同一台服务器上的备份,但是在一个新的数据库下:
Restoring a Complete Backup to a New Database on the Same Server
在新数据库中恢复数据库备份后,我找到了行并插入了它们:
INSERT INTO that_database..that_table
SELECT * FROM copy_database..that_table WHERE id IN (100, 101, 102)
上面的查询没有开箱即用,我必须启用身份插入并暂时禁用一些约束。