意外更新了sql server上的数据库

问题描述:

我的意思是更新数据库中记录的单个列,但是我忘了指定id,并且每个记录现在都已更新!有没有一种方法可以回滚数据,请帮忙!意外更新了sql server上的数据库

我的意思运行下面的语句:

Update Table set Cusname = "some name" where id = 2; 

,但我居然跑了以下内容:

update Table set Cusname = "some name" 

现在每一个cusname列具有相同的名称。请帮忙 请帮忙!

+0

请问DBA恢复。 (在那里,这样做...) – jarlh

+0

对不起,但我该怎么做? – 1future

+0

你没有DBA? – jarlh

你可以做的事情不多......这就是为什么你有一个好的备份策略(理想情况下,在测试中测试之前,不要在生产数据库中执行任何“ad hoc”t-sql数据库,然后复制/粘贴语句以帮助避免将来出现这些类型的错误)。

从注释拉动信息,您可以通过执行这些方针的东西开始:Can I rollback a transaction I've already committed? (data loss)

(这是PostgreSQL的,但这个想法是一样的... ...停止服务器,备份所有相关文件,等等)。

如果您有事务日志记录和日志备份,则可以尝试进行时间点恢复,但必须先设置之前的以解决您的错误。看到这里:Reverse changes from transaction log in SQL Server 2008 R2?

在这种情况下,你最好的选择可能是花一些时间解决问题而不需要恢复。它看起来像你更新你的客户名称。你有另外的客户信息来源吗?你能编译一个外部客户列表,比如地址,这样你就可以在这些列表上重新匹配你的数据库的客户名称吗?如果是这样,这可能是一个更容易的途径,让你完全恢复你的打击领域。如果您没有大量数据,则可以执行此操作并手动填写剩余的数据。这是一个过程,但没有一个好的数据库恢复备份,它可能是值得一看的...

另外请注意,如果数据库托管在基于云的S/P/Iaas,您可能会进行更深层次的备份,或者对于“SQL数据库”(例如SQL Azure),即使对于最低的服务计划,备份也是即装即用的。

+0

坏计划。如果幸运的是它处于完全恢复模式,则完全备份实际上会清除事务日志。 – Paparazzi