--恢复到特定的备份日期
IF DB_ID('PRG') IS NOT NULL
DROP DATABASE PRG;
GO
CREATE DATABASE PRG;
GO
CREATE TABLE PRG.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));
GO
BACKUP DATABASE PRG TO DISK='d:/1.bak' WITH FORMAT;
GO
INSERT INTO PRG.dbo.T DEFAULT VALUES;
GO
WAITFOR DELAY '00:00:01';
DECLARE @Datetime BINARY(128);
SET @Datetime=CAST(GETDATE() AS BINARY(128));
print '---------';
print @Datetime;
print '---------';
SET CONTEXT_INFO @Datetime
GO
INSERT INTO PRG.dbo.T DEFAULT VALUES;
GO
BACKUP LOG PRG TO DISK='d:/2.bak' WITH FORMAT;
GO
RESTORE DATABASE PRG FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;
GO
DECLARE @Now DATETIME;
SET @Now=DATEADD(SECOND,-1,(SELECT CAST(CONTEXT_INFO() AS DATETIME)));
print '^^^^^^^^^^^';
print @Now;
print '***********';
RESTORE LOG PRG FROM DISK='d:/2.bak' WITH RECOVERY,STOPAT=@Now;
GO
SELECT * FROM PRG.dbo.T
DROP DATABASE PRG;
GO
本文介绍了一种使用SQL Server进行数据库备份及恢复至特定时间点的方法。通过创建数据库、插入记录并备份,在不同时刻创建事务日志备份,最终实现恢复到指定时间点的功能。此过程涉及多个SQL语句的执行,包括设置上下文信息以用于精确恢复。
1万+

被折叠的 条评论
为什么被折叠?



