我有一个standby
模式的数据库。
-- STEP 1
-- Restore path F1 > T7
RESTORE DATABASE [TestRestore] FROM DISK = N'C:\Temp\F1.BAK' WITH FILE = 1,
NORECOVERY, NOUNLOAD, REPLACE, STATS = 5
GO
-- STEP 1
RESTORE LOG [TestRestore] FROM DISK = N'C:\Temp\T7.TRN' WITH FILE = 1,
STANDBY = N'C:\Temp\TestRestore_RollbackUndoFile.tuf', NOUNLOAD, STATS = 5
GO
而现在我要做原木运输。我的数据库是可访问的(read only
),因此很容易确定我需要停留的具体时间点。
-- STEP 3
-- Restore T8
USE [master]
RESTORE LOG [TestRestore] FROM DISK = N'C:\Temp\T8.TRN' WITH FILE = 1,
STANDBY = N'C:\Temp\TestRestore_RollbackUndoFile.tuf',
NOUNLOAD, STATS = 10, STOPAT = N'2013-10-25T19:55:26'
GO
-- STEP 4
-- ckecking
SELECT * FROM TestRestore.dbo.TranRecord
GO
我可以重复执行相同的事务日志恢复,直到我通过增加STOPAT
子句中指定的时间到达所需的时间点。
但是,例如,如果我意识到我已经恢复得太远了,我是否需要再次重新进行整个恢复?(我的意思是删除当前恢复db
并F1 > T7 > T8
再次恢复并停在我需要的地方)。或者可以撤消最后一次日志传送?(在我的例子中STEP 3
)。
Msdn给出了相当有争议的内涵。
指定允许撤消恢复效果的备用文件。
发布于 2018-08-27 17:52:49
您必须重新启动还原序列。
我相信SQL Server理论上可以允许及时向后移动,因为日志包含撤消和重做信息。但是要么没有实现,要么由于某种原因不可能。
https://stackoverflow.com/questions/-100002438
复制相似问题