1

一个脚本使用以下查询意外地从数据库中删除了几行:

DELETE FROM that_table WHERE id IN (100, 101, 102)

同时添加了更多行。有没有办法让我将三行恢复到同一个表(或者可能是另一个数据库/表)中?我不想恢复数据库,就好像这意味着我丢失了在该查询之后添加/更新的所有数据。手动输入缺失的行是一种选择。

4

3 回答 3

1

您可以使用ApexSQL Log,这是一种 SQL Server 审计和恢复工具,它从数据库事务日志中读取信息,并为 DML 和 DDL 操作提供撤消 T-SQL 脚本。

免责声明:我在 ApexSQL 担任产品支持工程师

于 2014-06-20T20:06:53.887 回答
0

当您使用 SQL Server 2000 时,您可能会很幸运,因为免费的Redgate SQL 日志救援工具适用于该版本。

于 2011-10-03T10:54:13.157 回答
0

幸运的是我有一个备份,所以我使用此处描述的过程在同一台服务器上但在一个新数据库下恢复备份:

将完整备份恢复到同一服务器上的新数据库

在新数据库中恢复数据库备份后,我找到了行并插入它们:

INSERT INTO that_database..that_table
SELECT * FROM copy_database..that_table WHERE id IN (100, 101, 102)

上面的查询不是开箱即用的,我必须启用身份插入并暂时禁用几个约束。

于 2011-10-03T13:15:34.263 回答