MS SQL 如何Rollback

andylyc 2008-01-21 02:06:07
执行 update的时候忘记加条件了,可以rollback吗,十万火急急!!! 还望各位大侠们出手相救啊!
...全文
3162 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickey_update 2011-09-22
  • 打赏
  • 举报
回复
那个好心人有Log Explorer吗,发一份到284431063@qq.com
ojuju10 2008-01-21
  • 打赏
  • 举报
回复
只有定义了begin tran
才可以rollback tran

系统默认每次运行的Sql脚本就是一个事务,它已经提交了,不能再回滚了!
yangjiexi 2008-01-21
  • 打赏
  • 举报
回复
所以更新数据库数据时一定要小心,
数据库大时通常修改某个表需要先备份此表!
不大就先备份数据库再修改!
r_swordsman 2008-01-21
  • 打赏
  • 举报
回复
超简单.......重启服务器就可以了....
andylyc 2008-01-21
  • 打赏
  • 举报
回复
彻底没辙了,数据库没备份,log也没有,真不知道数据库是怎么管理的,唉...
dawugui 2008-01-21
  • 打赏
  • 举报
回复
看来是只能使用log explorer了.

用日志工具Log Explorer
步骤:
1、查看日志
a、打开log explorer,选择菜单File-->attach log file
b、在Log File Selection窗口中,填写连接到要恢复数据的数据库服务器机器名、数据库登录ID及密码,然后点击"Connect"按钮。
c、若连接成功,则窗口左边树将显示命令菜单,这时我们点击Browser下的View Log命令,此时窗口右边则出现该数据库的Log。
2、恢复数据库
这时您只要选择您要恢复对事件点,右键点击选择"undo transation"命令,保存T-SQL代码,然后在查询分析器中执行该T-SQL代码
火星求索 2008-01-21
  • 打赏
  • 举报
回复
使用Log Explorer恢复数据

用日志工具Log Explorer
步骤:
1、查看日志
a、打开log explorer,选择菜单File-->attach log file
b、在Log File Selection窗口中,填写连接到要恢复数据的数据库服务器机器名、数据库登录ID及密码,然后点击"Connect"按钮。
c、若连接成功,则窗口左边树将显示命令菜单,这时我们点击Browser下的View Log命令,此时窗口右边则出现该数据库的Log。
2、恢复数据库
这时您只要选择您要恢复对事件点,右键点击选择"undo transation"命令,保存T-SQL代码,然后在查询分析器中执行该T-SQL代码
注:删除后作了数据库备份 备份会截断日志
kk19840210 2008-01-21
  • 打赏
  • 举报
回复
如果你的数据恢复模型是完整的话 试着用日志还原的时间点


--创建测试数据库
CREATE DATABASE Db
GO

--对数据库进行备份
BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT
GO

--创建测试表
CREATE TABLE Db.dbo.TB_test(ID int)

--延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
WAITFOR DELAY '00:00:01'
GO

--假设我们现在误操作删除了 Db.dbo.TB_test 这个表
DROP TABLE Db.dbo.TB_test

--保存删除表的时间
SELECT dt=GETDATE() INTO #
GO

--在删除操作后,发现不应该删除表 Db.dbo.TB_test

--下面演示了如何恢复这个误删除的表 Db.dbo.TB_test

--首先,备份事务日志(使用事务日志才能还原到指定的时间点)
BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT
GO

--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY
GO

--将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早
DECLARE @dt datetime
SELECT @dt=DATEADD(ms,-20,dt) FROM # --获取比表被删除的时间略早的时间
RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt
GO

--查询一下,看表是否恢复
SELECT * FROM Db.dbo.TB_test

/*--结果:
ID
-----------

(所影响的行数为 0 行)
--*/

--测试成功
GO

--最后删除我们做的测试环境
DROP DATABASE Db
DROP TABLE #
威尔亨特 2008-01-21
  • 打赏
  • 举报
回复
用日志恢复
free1879 2008-01-21
  • 打赏
  • 举报
回复
不可以回滚!
看看你的条件是什么?update回原来的数据,再update加条件!
yangjiexi 2008-01-21
  • 打赏
  • 举报
回复
不行,用备份的数据库去找出修改的数据,
或用工具Log Explorer
OracleRoob 2008-01-21
  • 打赏
  • 举报
回复
用Log Explorer试试
昵称被占用了 2008-01-21
  • 打赏
  • 举报
回复
已经提交,不可以回滚

下载个SQL Explorer ,用日志恢复

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧