我有一个与Server检查点日志序列号有关的问题。
我读过一些文章,他们说差异备份的CheckpointLSN映射到在此差异备份之后创建的第一个事务日志备份的CheckpointLSN,但是我在https://technet.microsoft.com页面上找不到确认。
我对此有一个疑问,因为我读到了将日志备份定位到DIFF的唯一可能方法是: DIFF.DatabaseBackupLSN =< LOG.DatabaseBackupLSN,DIFF.LastLSN < LOG.LastLSN
此外,我还进行了以下测试,似乎差异备份的CheckpointLSN映射到了在此差异备份之后创建的第一个事务日志备份的CheckpointLSN。

那么这是正确的吗?
发布于 2017-04-04 15:47:35
不,它不是一直都在地图。这取决于检查点发生的间隔。您可以使用下面的代码对此进行测试。
为了解释我在评论中说过的话,您可以使用这段代码进行测试。
使用这里中的代码加载300行。
创建一个新表。
USE TestChkPoint
GO
CREATE TABLE dbo.TestTableSize
(
MyKeyField VARCHAR(10) NOT NULL,
MyDate1 DATETIME NOT NULL,
MyDate2 DATETIME NOT NULL,
MyDate3 DATETIME NOT NULL,
MyDate4 DATETIME NOT NULL,
MyDate5 DATETIME NOT NULL
)
GO如果您执行下面的操作,您将在diff和log1备份之间看到不同的log1。
--insert new data
BACKUP DATABASE TestChkPoint TO DISK= 'C:\TestChkPoint.Full.bak'
--insert new data
BACKUP DATABASE TestChkPoint TO DISK= 'C:\TestChkPoint.diff.bak' WITH DIFFERENTIAL
--insert new data
CHECKPOINT
BACKUP LOG TestChkPoint TO DISK= 'C:\TestChkPoint.log1.bak'如果执行此操作,您将在diff和log1备份中看到相同的log1。注意,我注释掉了手动检查点。
--insert new data
BACKUP DATABASE TestChkPoint TO DISK= 'C:\TestChkPoint.Full.bak'
--insert new data
BACKUP DATABASE TestChkPoint TO DISK= 'C:\TestChkPoint.diff.bak' WITH DIFFERENTIAL
--insert new data
--CHECKPOINT
BACKUP LOG TestChkPoint TO DISK= 'C:\TestChkPoint.log1.bak'现在,如果将TARGET_RECOVERY_TIME设置为1秒,并在没有手动检查点的情况下执行以下步骤,那么在diff和日志备份之间将看到不同的checkpointLSN。
ALTER DATABASE TestChkPoint SET TARGET_RECOVERY_TIME = 1 SECONDS;
--insert new data
BACKUP DATABASE TestChkPoint TO DISK= 'C:\TestChkPoint.Full.bak'
--insert new data
BACKUP DATABASE TestChkPoint TO DISK= 'C:\TestChkPoint.diff.bak' WITH DIFFERENTIAL
--no manual checkpoint
--insert new data change 300 to 30000
BACKUP LOG TestChkPoint TO DISK= 'C:\TestChkPoint.log1.bak'https://dba.stackexchange.com/questions/169066
复制相似问题