--创建数据库
create database test;
--将数据库日志备份模式设置为全日志
ALTER DATABASE test SET RECOVERY FULL ;
--查询、确认数据库日志备份模式
SELECT name, recovery_model, recovery_model_desc FROM sys.databases WHERE name = 'test' ;
----Changing recovery model to Bulk-logged
--ALTER DATABASE AdventureWorks SET RECOVERY BULK_LOGGED ;
----Changing recovery model to Simple
--ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE ;
go
use [test]
go
--创建新表
create table testtable (id int , name varchar(300))
--往新表testtable里插入100条数据
declare @i int
set @i = 0
while @i < 100
begin
insert into testtable values(@i,'test')
set @i = @i + 1
end
--查看新表数据量
select count(*) as c_rows from testtable
-- c_rows
-- 100
--备份数据库
backup database test to disk='d:/full_backup.bak' with init
--往新表testtable里插入900条数据
declare @j int
set @j = 100
while @j < 1000
begin
insert into testtable values(@j,'test')
set @j = @j + 1
end
--出现误操作
drop table testtable
use master
--备份日志文件
BACKUP LOG test TO DISK='d:/log_for_now.logs' WITH INIT
--使用备份的完整数据库,还原数据库
RESTORE DATABASE test from disk='d:/full_backup.bak' WITH NORECOVERY
--尚未备份数据库 "test" 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。
--请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。
use test
--根据备份的日志文件对数据对具体某时间点的数据恢复
RESTORE LOG test
FROM disk='d:/log_for_now.logs'
WITH RECOVERY,STOPAT='3/14/2018 17:55'
--查询结果,测试实际效果
select count(*) from testtable