sqlserver2008R2 全日志恢复 实例操作

Posted on 2018-03-14 17:56  天道酬勤+勤能补拙  阅读(515)  评论(0编辑  收藏  举报

--创建数据库
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

 

Copyright © 2024 天道酬勤+勤能补拙
Powered by .NET 9.0 on Kubernetes