2011-01-14 37 views
15

在SQL Server Management Studio中,我在下面进行了查询。
不幸的是,我忘记取消注释WHERE条款。
1647行被更新,而不是4.如何撤消SQL Server UPDATE查询?

如何撤消最后一条语句?

不幸的是,我刚刚完成翻译那些1647行,并做了最后的更正,因此没有备份

UPDATE [dbo].[T_Language] 
    SET 
     [LANG_DE] = 'Mietvertrag' --<LANG_DE, varchar(255),> 
     ,[LANG_FR] = 'Contrat de bail' -- <LANG_FR, varchar(255),> 
     ,[LANG_IT] = 'Contratto di locazione' -- <LANG_IT, varchar(255),>  
     ,[LANG_EN] = 'Tenancy agreement' -- <LANG_EN, varchar(255),> 
     --WHERE [LANG_DE] like 'Mietvertrag' 

有一个交易协议,至少我希望如此。

+0

你有没有做过备份?什么是您的恢复模式? – 2011-01-14 13:37:58

+0

恢复模式? ;-) – 2011-01-14 13:39:06

+1

哦,谢天谢地,我从今天下午开始自动备份。 – 2011-01-14 13:39:49

回答

9

非提交的事务可以通过发出命令来恢复ROLLBACK

但因为你有一个完整的,如果你正在运行自动提交模式没有什么可以做....

0

备份时,可以将备份还原到另一台服务器上,作为相同名称的数据库或具有不同名称的同一台服务器。

然后,您可以查看更新前的内容并编写一个SQL脚本来执行更新。

4

考虑到您已经拥有完整的备份,我只需将该备份恢复到单独的数据库并从那里迁移数据。

如果您的数据在最新的备份后发生了变化,那么您通过读取事务日志来恢复所有数据,但您可以尝试恢复。

如果您的数据库处于完全恢复模式,则事务日志具有足够的详细信息可在最新备份后恢复数据更新。

你可能想尝试使用DBCC LOG,fn_log功能或与第三方日志读者如ApexSQL Log

不幸的是没有简单的方法来读取事务日志,因为MS不,这和存储提供文件数据以其专有格式。

4

如果您已经从数据库完整备份,幸运的是,您可以在SQL Management Studio中选择一个选项。在这种情况下,您可以使用以下步骤:

  1. 右键单击数据库 - >任务 - >还原 - >数据库。

  2. 在常规选项卡中,单击时间轴 - >选择特定日期和时间选项。

  3. 将时间轴滑块移至更新命令时间前 - >单击确定。

  4. 在目标数据库名称中,键入一个新名称。

  5. 在文件选项卡中,检入重新分配所有文件到文件夹,然后选择一个新路径来保存您恢复的数据库。

  6. 在选项选项卡中,选中覆盖...并删除选择尾部日志...检查选项。

  7. 最后,单击确定并等待恢复过程结束。

我已经在操作数据库中使用了这种方法,它非常有用。