设为首页 加入收藏

TOP

SQL Server中的事务日志管理(5/9):完整恢复模式里的日志管理(四)
2015-11-21 01:40:55 来源: 作者: 【 】 浏览:3
Tags:SQL Server 事务 日志 管理 5/9 完整 恢复 模式
?3 USE master ;
?4 GO
?5 RESTORE DATABASE ANewTestDB
?6 ? ?FROM DISK ='C:\Backups\TestDB.bak'
?7 ? ?WITH STANDBY='C:\Backups\ANEWTestDB.bak',
?8 ? ?MOVE 'TestDB_dat' TO 'C:\Standby\ANewTestDB.mdf',?
?9 ? ?MOVE 'TestDB_log' TO 'C:\Standby\ANewTestDB.ldf'
10 GO
?
(代码5.10:在STANDBY模式里恢复TestDB副本)
?
现在我们有一个名为ANewTestDB的数据库,它在”备用/只读“模式里,如下所示:
?
?(图5.1:待命数据库
?
对ANewTestDB数据库的Lost表查询会返回10条记录。但是我们想把表恢复到在删除之前的状态。因此,下一步进行对待命数据库进行日志备份还原。
?
1 USE master
2 GO
3 RESTORE LOG ANewTestDB
4 FROM DISK = 'C:\Backups\TestDB_log.bak'
5 ? ?WITH STANDBY='C:\Backups\ANewTestDB_log.bak'
(代码5.11:在待命模式里的ANewTestDB数据库里,恢复日志备份)
?
这个时候,ANewTestDB数据库已经恢复11条记录,我们可以拷贝这些记录到TestDB数据库。如果我们进一步,还原第2个日志备份,我们会发现我们走过头了,LogTest表同样在待命数据库里丢失了。
?
其他进行待命还原是考虑使用例如Red Gate的SQL Virtual Restore的第三方工具,它提供多个数据库备份文件直接还原,数据库正常运行,不需要物理还原的方法。
?
不管DBA是否喜欢,开发者经常访问生产数据库进行即席数据读取和修改。保持这些操作正常进行是DBA和开发者的连带责任,因此不要引起刚才介绍这类操作的问题。我们会在第6篇——处理大容量操作里继续讨论这个话题。
?
当然,修复行动的本身需要取决于错误事务的本身。如果表被”不小心删除“,那你可以进行RESTORE WITH STANDBY方法。其他时间,你可以直接创建脚本来反向这些流氓修改。
?
如果损坏只影响到单列或少量行,那么可以使用SQL Data Compare这样的工具,可以直接和备份文件比较,可以进行级别的还原。
?
另外,如果你使用SQL Server 2005(或更高)的企业版本,我们有最近数据库快照功能,你可以执行快照查询来取回数据库执行快照时的数据,然后写UPDATE或INSERT命令把快照里是数据写入当前运行的数据库。
?
最后,作为最后一招,专门的日志读取工作会帮你逆向事务的影响,尽管我不知道在SQL Server 2005和后续版本里的运行的任何可靠性。
?
小结
?
在这篇文章里,我们讨论了在完整恢复模式里,备份的基本和对数据库日志文件恢复,这些都是生产数据库的常规操作。
?
对大多数DBA,进行时间点恢复是很少的,但它是这些工作之一,如果需要的话,做且做好它是绝对必要的;DBA的名声取决于它。
?
在灾难情况里,硬盘故障等等,会涉及时间点的恢复,如果你幸运的话,可以做尾日志的备份,那你可以恢复到灾难前的时间点。如果事务日志不可用,或者你为了恢复到逆向”错误事务“发生前的时间点,那么情况变得棘手,希望这篇文章里这一步谈到的一些技术可以帮到你。
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQL从入门到基础 - 02 SQLServer.. 下一篇SQL从入门到基础?03 SQLServer基..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: