在SQL Server

时间:2016-06-08 13:02:00

标签: sql sql-server

我的目的是更新数据库中记录的单个列,但我忘了指定id,现在每条记录都已更新!有没有办法可以回滚数据请帮忙!

我打算运行以下声明:

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

但我实际上运行了以下内容:

update Table set  Cusname = "some name"

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

1 个答案:

答案 0 :(得分:3)

你可以做的并不多......这就是为什么你有一个很好的备份策略(理想情况下,不要执行任何" 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?

在这种情况下,你最好的选择可能是花一些时间在没有恢复的情况下解决问题。您似乎更新了客户名称。您是否有其他客户信息来源?您可以编译一个外部客户列表,比如地址,这样您可以匹配这些客户名称来重置您的数据库客户名称吗?如果是这样,这可能是一个更容易的路线,让你大部分时间完全恢复你的bonked领域。如果您没有大量数据,可以执行此操作并手动填写其余数据。这是一个过程,但如果没有好的数据库备份可以恢复,那么很可能值得一看......

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