一 、前期准备
1、需要保证数据库的恢复模式为【大容量日志】或【完整】,不能为【简单】。具体操作如下:
选中需要还原数据的数据库,右键【属性】——【选项】——将右侧的恢复模式选为【完整】或【大容量日志】(建议选为【完整】),点击确认即可。如下图1,图2
图1
图2
同时也可以用脚本查看当前数据库的恢复模式:
SELECT recovery_model,recovery_model_desc FROM sys.databases WHERE name ='AdventureWorks'
结果如图3:
图3
其中的FULL就代表【完整】恢复模式的意思。
2、至少完整备份一次数据库。因为所有类型的备份都基于完整备份,如果没有一次完整备份,其他类型的备份都是多余的,所以在这里强调一下,在创建完一个新数据库之后,强烈建议甚至做一次完整备份,这里我们先演示一次完整备份。
将已打开的页面全部关闭,右键AdventureWorks——【任务】——【备份】,在弹出的对话框中进行配置,如图4:
图4
点击确定即可开始备份,待备份完成弹出备份成功我们就完成了一次完整备份。
注意:如果有用户在使用当前数据库AdventureWorks,则会一直卡在备份界面,所以在操作前请务必将所有查询页面关闭。
备份完成后可以查询刚才备份的文件
SELECT database_name,recovery_model,name,backup_finishi_date FROM msdb.dbo.backupset
结果如图5:
图5
二、建立测试数据
我们在AdventureWorks下新建一个TEST表,并插入一些测试数据。
USE AdventureWorks GO IF OBJECT_ID('TEST') IS NOT NULL DROP TABLE TEST GO CREATE TABLE TEST ( ID VARCHAR(10), TNAME NVARCHAR(20), AGE INT ) INSERT INTO dbo.TEST VALUES ('1001',N'张三',20), ('1002',N'李四',23), ('1003',N'王五',21), ('1004',N'马六',22), ('1005',N'赵七',20), ('1006',N'宋一',19), ('1007',N'刘二',22)
查看一下表TEST里的内容,如图6:
图6
然后来做个删除操作,为了定位是什么时候发生的,我加了一个WAITFOR 命令,让它在某个具体时间发生,这样恢复的时候就有准确性:
USE AdventureWorks GO WAITFOR TIME '16:09' DELETE FROM dbo.TEST
然后再来看TEST表中的数据,如图7:
图7