如何生成具有独立备份链的数据库的完整备份?
How to generate full backups of a DB with independent backup chains?
我正在尝试生成数据库的独立完整备份,但无法获得想要的结果。对于我读到的内容,完整数据库备份将创建一个新的备份链,并且执行的连续差异备份是 'chained' 到该完整备份。但是,当我运行两次备份数据库的脚本时,结果是第二次完全备份依赖于第一次。
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
什么脚本会创建一个新的(独立的)备份链?
你的脚本是正确的。
Database_backup_lsn 定义为
"最近的完整数据库备份的日志序列号。可以为 NULL。
Database_backup_lsn 是备份开始时触发的 "begin of checkpoint"。如果在数据库空闲且未配置复制时进行备份,则此 LSN 将与 first_lsn 重合。"
https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/backupset-transact-sql?view=sql-server-2017
所以第二个备份只保留指向前一个的指针,但没有依赖关系。
我正在尝试生成数据库的独立完整备份,但无法获得想要的结果。对于我读到的内容,完整数据库备份将创建一个新的备份链,并且执行的连续差异备份是 'chained' 到该完整备份。但是,当我运行两次备份数据库的脚本时,结果是第二次完全备份依赖于第一次。
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
什么脚本会创建一个新的(独立的)备份链?
你的脚本是正确的。
Database_backup_lsn 定义为
"最近的完整数据库备份的日志序列号。可以为 NULL。
Database_backup_lsn 是备份开始时触发的 "begin of checkpoint"。如果在数据库空闲且未配置复制时进行备份,则此 LSN 将与 first_lsn 重合。"
https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/backupset-transact-sql?view=sql-server-2017
所以第二个备份只保留指向前一个的指针,但没有依赖关系。