楼主: 与你零距离

[讨论] SQL Server如何恢复不小心删除的数据?

[复制链接]
论坛徽章:
13
2012新春纪念徽章
日期:2012-01-04 11:56:19喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2012-11-01 17:05:28迷宫蛋
日期:2012-06-13 15:28:34
11#
发表于 2012-5-21 09:55 | 只看该作者
hwtong 发表于 2012-5-21 09:53
或者使用Log Explorer来读取日志,看是否可以将数据弄回来.
没使用过,据说可以

的确是,那个就不是走的SQL Server自己的恢复流程了,而是根据删除的数据相反生成相反的语句,然后重做一遍...log diff貌似也行,不过这类收费的东东伤不起啊

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
3
奥运会纪念徽章:网球
日期:2012-06-25 14:58:22慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
12#
 楼主| 发表于 2012-5-21 09:57 | 只看该作者
hwtong 发表于 2012-5-21 09:53
或者使用Log Explorer来读取日志,看是否可以将数据弄回来.
没使用过,据说可以

看来在任何删除操作前备份都是很有必要哦

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
13#
发表于 2012-5-21 09:59 | 只看该作者
与你零距离 发表于 2012-5-21 09:57
看来在任何删除操作前备份都是很有必要哦

其实备份不备份倒是其次,首先一定要确定是否应该这样做.
如果每次delete都要备份下,那很恼火的.
如果确定一定是这样做,而且是正确的,那么就没什么问题了

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
14#
发表于 2012-5-21 09:59 | 只看该作者
CareySon 发表于 2012-5-21 09:55
的确是,那个就不是走的SQL Server自己的恢复流程了,而是根据删除的数据相反生成相反的语句,然后重做一 ...

你说的DIff是指?
Table Diff?

使用道具 举报

回复
论坛徽章:
13
2012新春纪念徽章
日期:2012-01-04 11:56:19喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2012-11-01 17:05:28迷宫蛋
日期:2012-06-13 15:28:34
15#
发表于 2012-5-21 10:05 | 只看该作者
hwtong 发表于 2012-5-21 09:59
你说的DIff是指?
Table Diff?

指的是ApexSQL log Diff 2011这个软件,挺强力的,不过收费,免费版只能恢复5条数据....这根本无法在生产环境中用,破解版的还找不到-.-

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
3
奥运会纪念徽章:网球
日期:2012-06-25 14:58:22慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
16#
 楼主| 发表于 2012-5-21 10:33 | 只看该作者
hwtong 发表于 2012-5-21 09:59
其实备份不备份倒是其次,首先一定要确定是否应该这样做.
如果每次delete都要备份下,那很恼火的.
如果确 ...

想明白、看清楚了再删

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
3
奥运会纪念徽章:网球
日期:2012-06-25 14:58:22慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
17#
 楼主| 发表于 2012-5-21 10:34 | 只看该作者
CareySon 发表于 2012-5-21 10:05
指的是ApexSQL log Diff 2011这个软件,挺强力的,不过收费,免费版只能恢复5条数据....这根本无法在生产 ...

不错的工具

使用道具 举报

回复
论坛徽章:
13
2012新春纪念徽章
日期:2012-01-04 11:56:19喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2012-11-01 17:05:28迷宫蛋
日期:2012-06-13 15:28:34
18#
发表于 2012-5-21 14:35 | 只看该作者
我在生产环境上做任何delete或者update的时候必须要做的事就是在语句前加上
begin tran

发现影响的行数不对立刻rollback,刚毕业的时候误删了一个配置表300多行,那阵对ms sql不太熟...
幸亏有一个备份的excel.对着一行行敲进去的...

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
19#
发表于 2012-5-21 14:43 | 只看该作者
再介绍一个小技巧.
你在update或者delete之前,首先select下需要操作的数据有多少.
之后在update或者delete之后加上TOP参数,限制受影响的行数.这样即使出错,也保证影响范围不大
比如delete top (10) from aaa
update top (10) aaa
set id=1
where name='xxx'

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
20#
发表于 2012-5-21 14:43 | 只看该作者
CareySon 发表于 2012-5-21 14:35
我在生产环境上做任何delete或者update的时候必须要做的事就是在语句前加上
begin tran


再介绍一个小技巧.
你在update或者delete之前,首先select下需要操作的数据有多少.
之后在update或者delete之后加上TOP参数,限制受影响的行数.这样即使出错,也保证影响范围不大
比如delete top (10) from aaa
update top (10) aaa
set id=1
where name='xxx'

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表