首页 > 解决方案 > 如何生成具有独立备份链的数据库的完整备份?

问题描述

我正在尝试生成数据库的独立完整备份,但我无法获得我正在寻找的结果。对于我所阅读的内容,完整的数据库备份将创建一个新的备份链,并且执行的连续差异备份被“链接”到该完整备份。但是,当我运行两次备份数据库的脚本时,结果是第二次完全备份依赖于第一次。

BACKUP DATABASE [Pruebas2] TO  DISK = 'C:\temp\new\Backup_pruebas2.bak' WITH NOINIT, NAME = N'Database Backup',STATS = 10;
BACKUP DATABASE [Pruebas2] TO  DISK = 'C:\temp\new\Backup_pruebas2.bak' WITH DIFFERENTIAL,NOINIT, NAME = N'Database Backup',STATS = 10;

--new backup of DB ' Pruebas2' saved into a different file
BACKUP DATABASE [Pruebas2] TO  DISK = 'C:\temp\new\Backup_pruebas2_2.bak' WITH NOINIT, NAME = N'Database Backup',STATS = 10;
BACKUP DATABASE [Pruebas2] TO  DISK = 'C:\temp\new\Backup_pruebas2_2.bak' WITH DIFFERENTIAL,NOINIT, NAME = N'Database Backup',STATS = 10;

这些是 queryng msdb.dbo.backupset 的结果:

physical_device_name                position    type    backup_start_date       backup_finish_date      first_lsn           checkpoint_lsn      database_backup_lsn

C:\temp\new\Backup_pruebas2.bak     1           D       2019-05-16 15:15:14.000 2019-05-16 15:15:14.000 32000000034300102   32000000034300102   0

C:\temp\new\Backup_pruebas2.bak     2           I       2019-05-16 15:15:14.000 2019-05-16 15:15:14.000 32000000039600034   32000000039600034   32000000034300102

C:\temp\new\Backup_pruebas2_2.bak   1           D       2019-05-16 15:15:59.000 2019-05-16 15:15:59.000 32000000041400037   32000000041400037   32000000034300102

C:\temp\new\Backup_pruebas2_2.bak   3           I       2019-05-16 15:33:16.000 2019-05-16 15:33:16.000 32000000043900034   32000000043900034   32000000041400037

我希望存储在“Backup_pruebas2_2.bak”文件中的完整备份的“database_backup_lsn”为0,而不是与第一个完整备份链接的32000000034300102

什么脚本将创建一个新的(独立的)备份链?

标签: sql-serverdatabase-backups

解决方案


你的脚本是正确的。

database_backup_lsn定义为
“最近一次全数据库备份的日志序列号。可以为
NULL。database_backup_lsn是备份开始时触发的“检查点开始”。如果在数据库进行备份时,这个LSN将与first_lsn重合处于空闲状态且未配置复制。”
https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/backupset-transact-sql?view=sql-server-2017

所以第二个备份只保留指向前一个的指针,但没有依赖关系。


推荐阅读