如何生成具有独立备份链的数据库的完整备份?

时间:2019-05-16 18:35:41

标签: sql-server database-backups

我试图生成数据库的独立完整备份,但无法获得所需的结果。就我所读的内容而言,完整的数据库备份将创建一个新的备份链,并且成功执行的差异备份将“链接”到该完整备份。但是,当我运行脚本两次以备份数据库时,结果是第二次完全备份取决于第一个。

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;

这些是查询ng 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

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

1 个答案:

答案 0 :(得分:2)

您的脚本是正确的。

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

因此第二个备份仅保留指向前一个的指针,而没有依赖性。