MSSQL 2012 日志还原

日志还原条件
--条件一:检查数据库的恢复模式:Full
--条件二:有最后一次的完整备份
--条件三:完整备份后未强制截断日志
--条件四:故障发生后做过日志备份
    
CREATE TABLE [dbo].[tb](
    [姓名] [varchar](10) NULL,
    [课程] [varchar](10) NULL,
    [分数] [int] NULL
) ON [PRIMARY]
Insert into tb (姓名,课程, 分数 ) values ('张三1', '语文', 80),('张三', '语文', 80),('张三2', '数学', 90),('张三3', '英语', 70)
---完整备份:
Use master
GO
Backup Database Test
    To Disk='D:\Backup\TEST_FullDB_20141103.bak'
    With  init
---模拟故障时间,记录前后时间
Use Test
GO
Select GETDATE () --2014-11-03 21:39:30.323
UPdate tb
SET 分数 = 150   --120
Select GETDATE () -- 2014-11-03 21:39:30.323
    
---故障后未强制截断日志备份
Backup Log Test
    To Disk='D:\Backup\TEST_Log_20141103_2.trn'
    With  No_Truncate, init
--- 还原到另一个数据库. NORECOVERY 模式(因测试环境只一个数据库实例,故路径要写明)
USE [master]
RESTORE DATABASE [TEST_New]
FROM  DISK = N'D:\Backup\TEST_FullDB_20141103.bak'
WITH FILE = 1,
MOVE N'Test' TO N'D:\Backup\Test.ndf', 
MOVE N'Test_log' TO N'D:\Backup\Test.ldf', 
NORECOVERY
    
----日志还原反复执行直到真正的时间点,使用STANDBY的目的是担心时间点选择不够准确,
还可以继续恢复日志备份
USE [master]
RESTORE LOG [TEST_New]
    FROM  DISK =N'D:\Backup\TEST_Log_20141103_2.trn'
    WITH  FILE = 1, 
    STANDBY = N'D:\Backup\ROLLBACK_UNDO_TEST_New.BAK', 
    STOPAT = N' 2014-11-03 21:39:30.323'
-----查看结果
Use TEST_New
-- Use TEST
Select * From dbo.tb (nolock)
-- 2014-11-03 21:32:19.070
    
---最后更新....


知识共享许可协议
《MSSQL 2012 日志还原》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
相邻依据:发表时间
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     167.32ms