首页 > 代码库 > MSSQL 2012 日志还原
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 日志还原