我目前正在搜索可以将数据重新恢复为原始格式的查询。
例如,如果我执行以下查询:
UPDATE Pupil
SET Telephone = '999'
WHERE Telephone = '0161'
我已经完成了这个查询,并意识到我不想改变电话,并希望它像以前一样。我理解使用视图并复制同一个表来测试查询是有用的。
但我想知道是否实际上有一个查询来重做我所做的更新或删除查询。
答案 0 :(得分:1)
这假设其他数据可能已包含999,您可能希望保留原样,或者您可以通过反转原始查询值将所有999恢复为0161。
如果您有完整的数据库登录并在事务期间执行此操作,则可能只回滚该一个事务...当然,如果您还原旧备份,则可以重新运行自备份以来的事务更改。
否则,您可能必须将备份还原到副本数据库,找到匹配的记录,并更新到该值的旧值...还原到同一服务器,例如MyDataBaseName_Old意味着您可以跨数据库连接到得到旧记录。 e.g。
update MyDatabaseName.dbo.Pupil
set p.Telephone = pold.Telephone
from MyDatabaseName.dbo.Pupil p
inner join MyDatabaseName_Old.dbo.Pupil pold on p.PupilID = pold.PupilID
where pold.Telephone = '0161'
抱歉,我无法提供更多帮助。希望它能为您提供一些其他您可能想要搜索的提示。
答案 1 :(得分:0)
您只能使用BackUps。使用完全备份与事务日志备份。然后,您将能够将数据库状态恢复到所需的状态。否则,无法在SQL Server中还原更新的行。我听说在Oracle中存在一个对数据库状态进行查询的功能,这是一段时间以前的事情。希望SQL服务器能够遵循它们并开发这样的功能。
答案 2 :(得分:0)
由于您使用的是SQL Server 2008 R2,因此您可能对Change Data Capture感兴趣。这不是一件容易的crtl-z
,但它可能会有所帮助。