通过日志恢复SQLServer的历史数据

通过日志恢复SQLServer的历史数据,第1张

通过日志恢复SQLServer的历史数据,第2张

通过日志还原,最重要的是:
1。必须有完整的备份,并且该备份必须在修改或删除数据之前进行。
2。更新和删除数据后,进行日志备份。日志备份将用于恢复以前的数据
以下步骤的目的:恢复被删除的表
SQL Server管理中的可视化操作步骤:
1 .创建数据库并进行完整备份:
-创建测试数据库
创建数据库Db
Go
-备份数据库
将数据库Db备份到磁盘=' c: \ Db.bak ',格式为
go
2 .创建空表
-创建测试表
创建表db.dbo.tb _ test (id int)
3。删除新建的假设这个表被误删了
——假设我们现在误删了表db . dbo . TB _ Test
drop table db . dbo . TB _ Test
。此时,我们希望恢复被删除的tb _ test表。此时记住删除表之前的时间,后面会用到[如果需要备份日志,可以使用SQL管理界面备份,也可以使用T-SQL备份
Backup log db to disk = ' c:\ db _ log . bak '格式
Go
4。恢复数据库,可以替换原来的数据库,也可以恢复到新的数据库DB1,其中新的数据库DB1
是一个接口操作:
任务-恢复-数据库:
在总选择页面选择我们之前的完整备份:db.bak,
设备后面的目标数据库。。确认后,您可以看到DB1数据库的状态变为“正在恢复”。。"
下一步:右键点击DB1数据库-恢复-事务日志,选择我们刚删除表后备份的事务日志:db_log.bak
选择下面的时间点。这个时间是我们记得删除上表之前的时间。单击确定,恢复成功。您可以看到删除的表又回来了。
完成脚本:
-创建测试数据库
创建数据库db
Go
-将数据库db备份到磁盘=' c: \ Db.bak '格式
Go
-创建测试表
创建表db . dbo . TB _ test(id int)
-延迟1秒,然后执行以下操作(这是因为SQL Server的时间精度为3%,如果没有延迟, 可能导致恢复到时间点的操作失败)
等待延迟' 00:00:01 '
go
-假设我们现在误删除了表Db.dbo . TB _ test
drop tabledb . dbo . TB _ test[/]-保存被删除表的时间
select dt = getdate()into #
go
-删除操作后发现表db . dbo 备份事务日志(使用事务日志只能恢复到指定的时间点)
Backup log db to disk = ' c:\ db _ log . bak '格式
Go
-接下来我们需要先恢复完整备份(日志必须在完整备份的基础上恢复)
Restore database db from disk = ' c:\ db . bak ' with replace, 无恢复
GO
-在删除操作之前还原事务日志(此处的时间对应于上述删除时间,略早于删除时间
declare @ dtdatetime
select @ Dt = dateadd(ms,-20,Dt) FROM # -获取略早于删除表的时间
Restore log db FROM disk = ' c:\ db _ log . bak ' with RECOVERY,sat = @ dt
go
-Check 看表是否恢复
select * from db . dbo . TB _ test
/*-Result:
ID
-
(受影响的行数为0)[/-最后删除测试环境
drop database db
drop table #

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 通过日志恢复SQLServer的历史数据

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情