我试图生成数据库的独立完整备份,但无法获得所需的结果。就我所读的内容而言,完整的数据库备份将创建一个新的备份链,并且成功执行的差异备份将“链接”到该完整备份。但是,当我运行脚本两次以备份数据库时,结果是第二次完全备份取决于第一个。
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
哪个脚本将创建一个新的(独立的)备份链?
答案 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
因此第二个备份仅保留指向前一个的指针,而没有依赖性。