在维护数据库时,难免会因为脚本编写错误而误更新了数据,此时可能备份数据库是前一天的,根据数据库备份文件还原就只能还原到前一天,会丢失当天的数据,因此需要能够按照指定时间还原数据库。
sqlserver事务日志提供了数据还原到指定时间点的功能,前提是事务日志是完整的
操作如下:
--数据库离线,断开其他所有连接
ALTER DATABASE SYWMS_CT SET OFFLINE WITH ROLLBACK IMMEDIATE
--首先还原完整数据库,误操作之前的数据库备份
RESTORE DATABASE SYWMS_CT FROM DISK='D:\SQL数据库(切勿删除)\SYWMS_CT_backup_2017_09_03_000008_7673256.bak' WITH REPLACE,NORECOVERY
--备份事务日志
D:\sql\ctlog9.9.bak
--将数据库还原到指定时间点
RESTORE LOG SYWMS_CT FROM DISK='D:\sql\ctlog9.9.bak' WITH RECOVERY,STOPAT=N'9/9/2017 5:40:00 PM'
--开启数据库连接
ALTER database SYWMS_CT set online