急切呼吁sql server 高手出现!!
解决方案 »
- 求助:怎么改表的SET ANSI_NULLS ON属性
- 超级难题:请邹大侠和子陌等高手进来帮忙,关于OPENDATASOURCE或openrowset传入ip,ui,pass参数问题?
- 关于字段合并并且以合并字段为条件查询报撮
- 建返回SQL语句的函数报错。
- 求达人帮忙将Oracle存储转为MSSQL存储
- 对文件进行全文索引的问题
- 问一个不是很有深度的问题!!!
- 关于sql server 2005 express的性能和稳定性
- 关于触发器的问题????
- 请教:我们用的sql server的查询分析器,为什么每次连接远程服务器的时候找不到自己的数据库(能连接),这是为什么
- 这个sql语句怎么写?
- 请问能不能编程实现将SQL服务器上的数据备份到本机?????
关键字 从日志中恢复SQL Server数据库到时间点
出处
Author:David Euler
Date: 2004/10/16
Email:[email protected] 有任何问题,请与我联系:) DB2中可以使得数据库回复到指定的时间点,SQL Server数据库的Recovery Model为full 或者Bulk copy的时候,是可以从日志来恢复数据库的。实际上日志中记录的一条一条的transact sql语句,恢复数据库的时候会redo这些sql语句。
前提条件:myBBS是数据库test中的一个表, 数据库test的Recovery Model为Full,Auto Close,Auto Shrink两个选项未选中。 数据库test的data files和log files均为默认的自动增长状态。A:2004/10/13,16:00进行数据库备份,backup database test to disk='d:\db\1600.bak' with initB:2004/10/14,13:00对数据库进行了update,delete等操作;C:2004/10/15,18:00使用delete mybbs where id>300时,语句误写成delete mybbs,因而删除了表mybbs中的所有数据。 现在在C点,C点对数据库进行了误操作,我们希望数据库能够恢复到C之前的状态,比如恢复到10月15日17:59分的状态。要恢复数据库B点,使用的是A点备分的数据库1600.bak;而使用的日志备分是最新的备分1820.logs;因而进行如下操作: --备分日志:BACKUP LOG test TO DISK='d:\1820.logs' WITH INIT --恢复数据库1600.bak,使用WITH NORECOVERY参数:RESTORE DATABASE test from disk='d:\db\1640.bak' WITH NORECOVERY --使用日志恢复数据库到10月15日17:59分:RESTORE LOG test
FROM disk='d:\1820.logs' WITH RECOVERY,STOPAT='10/15/2004 17:59'
上面的三条Transact SQL语句的对应过程: 1.恢复数据库到A点; 2.执行A-B之间的log记录,把数据库恢复到B点. 这样就恢复数据库到了指定的时间点。如果恢复不成功,可能的原因是:1.未使用正确的备分数据库;2.数据库选项选中了Auto Shrink.
http://dev.csdn.net/article/43/article/43/article/43/43234.shtm