我犯了一个巨大的错误,我执行了这个查询:
update Contact set ContaPassword = '7FD736A3070CB9766'
我忘记了WHERE
条款,所以它更新了所有用户的密码。:(
有没有办法可以在此查询之前恢复数据?
我犯了一个巨大的错误,我执行了这个查询:
update Contact set ContaPassword = '7FD736A3070CB9766'
我忘记了WHERE
条款,所以它更新了所有用户的密码。:(
有没有办法可以在此查询之前恢复数据?
如果您在 BEGIN TRANSACTION / ROLLBACK 之外运行更改,则无法撤消更改。这就是为什么我开始任何类型的生产数据更新:
BEGIN TRANSACTION
-- report the bad or undesired data condition before-hand
SELECT ...
-- change the data
INSERT/UPDATE/DELETE ...
-- ensure we changed a reasonable number of records; may not be accurate if table has triggers
SELECT @@ROWCOUNT
-- get the data condition afterwards and be sure it looks good.
SELECT ...
-- always start with this enabled first
ROLLBACK
-- don't do this until you are very sure the change looks good
-- COMMIT
Martin Smith 指出了Brent Ozar 在 dba.stackexchange.com上关于这个主题的这篇出色的帖子。在完全恢复模式下,可以检查日志文件以查看发生了什么变化。
此外,正如 Oded 所指出的,如果您有备份,那么恢复原始数据并不难。您可以在某处恢复备份并复制原始数据。