backupset (Transact-SQL)

适用于: SQL Server Azure SQL 托管实例 分析平台系统 (PDW)

每个备份集在表中占一行。 备份集包含来自单个成功备份操作的备份。 RESTORE、RESTORE FILELISTONLY、RESTORE HEADERONLY 和 RESTORE VERIFYONLY 语句对指定的一个或多个备份设备上的介质集中的单个备份集进行操作。

此表存储在 msdb 数据库中。

列名称 数据类型 描述
backup_set_id int 标识备份集的唯一备份集标识号。 标识,主键。
backup_set_uuid uniqueidentifier 标识备份集的唯一备份集标识号。
media_set_id int 标识备份集所在介质集的唯一介质集标识号。 引用 backupmediaset(media_set_id)
first_family_number tinyint 备份集中第一个介质簇的编号。 可以为 NULL。
first_media_number smallint 备份集从此处开始的介质的编号。 可以为 NULL。
last_family_number tinyint 备份从此处结束的介质的编号。 可以为 NULL。
last_media_number smallint 备份集从此处结束的介质的编号。 可以为 NULL。
catalog_family_number tinyint 包含备份集目录开始部分的介质簇的编号。 可以为 NULL。
catalog_media_number smallint 包含备份集目录开始部分介质的介质编号。 可以为 NULL。
position int 还原操作中用来定位相应的备份集和文件的备份集位置。 可以为 NULL。 有关详细信息,请参阅 BACKUP (Transact-SQL) 中的 FILE。
expiration_date datetime 备份集过期的日期和时间。 可以为 NULL。
software_vendor_id int 写入备份介质标头的软件供应商标识号。 可以为 NULL。
name nvarchar(128) 备份集的名称。 可以为 NULL。
说明 nvarchar(255) 备份集的说明。 可以为 NULL。
user_name nvarchar(128) 执行备份操作的用户的名称。 可以为 NULL。
software_major_version tinyint Microsoft SQL Server 主版本号。 可以为 NULL。
software_minor_version tinyint SQL Server 次要版本号。 可以为 NULL。
software_build_version smallint SQL Server 内部版本号。 可以为 NULL。
time_zone smallint 本地时间(备份操作发生地的时间)和协调世界时 (UTC) 之间的差(以 15 分钟的间隔为单位),使用的是备份操作开始时的时区信息。 值可介于(含) -48 到 +48 之间。 值 127 表示未知。 例如,-20 为美国东部标准时间 (EST),即比 UTC 晚 5 小时。 可以为 NULL。
mtf_minor_version tinyint Microsoft 磁带格式的次要版本号。 可以为 NULL。
first_lsn numeric(25,0) 备份集中第一条或最早的日志记录的日志序列号。 可以为 NULL。
last_lsn numeric(25,0) 备份集之后的下一条日志记录的日志序列号。 可以为 NULL。
checkpoint_lsn numeric(25,0) 日志记录中重做必须开始的日志序列号。 可以为 NULL。
database_backup_lsn numeric(25,0) 最近的数据库完整备份的日志序列号。 可以为 NULL。

database_backup_lsn 是备份开始时触发的“检查点的起点”。 如果进行备份时数据库空闲并且没有配置复制,此 LSN 则将与 first_lsn 一致。
database_creation_date datetime 数据库最初创建的日期和时间。 可以为 NULL。
backup_start_date datetime 备份操作的开始日期和时间。 可以为 NULL。
backup_finish_date datetime 备份操作的结束日期和时间。 可以为 NULL。
type char(1) 备份类型。 可以是:

D = 数据库
I = 差异数据库
L = 日志
F = 文件或文件组
G = 差异文件
P = 部分
Q = 差异部分

可以为 NULL。
sort_order smallint 执行备份操作的服务器的排序顺序。 可以为 NULL。 有关排序顺序和排序规则的详细信息,请参阅排序规则和 Unicode 支持
code_page smallint 执行备份操作的服务器的代码页。 可以为 NULL。 有关代码页的详细信息,请参阅排序规则和 Unicode 支持
compatibility_level tinyint 数据库的兼容级别设置。 可以是:

90 = SQL Server 2005 (9.x)
100 = SQL Server 2008 (10.0.x)
110 = SQL Server 2012 (11.x)
120 = SQL Server 2014 (12.x)
130 = SQL Server 2016 (13.x)
140 = SQL Server 2017 (14.x)
150 = SQL Server 2019 (15.x)
160 = SQL Server 2022 (16.x)

可以为 NULL。

有关兼容性级别的详细信息,请参阅 ALTER DATABASE 兼容级别 (Transact-SQL)
database_version int 数据库的版本号。 可以为 NULL。
backup_size numeric(20,0) 备份集的大小(以字节为单位)。 可以为 NULL。 对于 VSS 备份,backup_size 是一个估计值。
database_name nvarchar(128) 备份操作中涉及的数据库的名称。 可以为 NULL。
server_name nvarchar(128) 运行 SQL Server 备份操作的服务器的名称。 可以为 NULL。
machine_name nvarchar(128) 运行 SQL Server的计算机的名称。 可以为 NULL。
flags int 在 SQL Server 中,已弃用 flags 列,并且将使用以下位列来取代此列:

has_bulk_logged_data
is_snapshot
is_readonly
is_single_user
has_backup_checksums
is_damaged
begins_log_chain
has_incomplete_metadata
is_force_offline
is_copy_only

可以为 NULL。

在 SQL Server 早期版本的备份集中,标志位如下:
1 = 备份包含最少的记录数据。
2 = 使用了 WITH SNAPSHOT。
4 = 备份时数据库为只读。
8 = 备份时数据库处于单用户模式。
unicode_locale int Unicode 区域设置。 可以为 NULL。
unicode_compare_style int Unicode 比较风格。 可以为 NULL。
collation_name nvarchar(128) 排序规则名。 可以为 NULL。
Is_password_protected bit 备份集是否

受密码保护:

0 = 未受到保护

1 = 受到保护
recovery_model nvarchar(60) 数据库的恢复模式:

FULL

BULK-LOGGED

SIMPLE
has_bulk_logged_data bit 1 = 备份包含大容量日志数据。
is_snapshot bit 1 = 备份时使用了 SNAPSHOT 选项。
is_readonly bit 1 = 备份时数据库为只读。
is_single_user bit 1 = 备份时数据库处于单用户模式。
has_backup_checksums bit 1 = 备份包含备份校验和。
is_damaged bit 1 = 创建此备份时,检测到数据库损坏。 已要求备份操作忽略错误,继续执行备份。
begins_log_chain bit 1 = 这是一个连续的日志备份链中的第一个环节。 日志链的开始处是创建数据库后所做的第一个日志备份,或者是数据库从简单模式切换到完整模式或大容量日志恢复模式时所做的第一个日志备份。
has_incomplete_metadata bit 1 = 带不完整元数据的结尾日志备份。 有关详细信息,请参阅 《Tail-Log Backups (SQL Server)》(结尾日志备份 (SQL Server))。
is_force_offline bit 1 = 进行备份时,使用了 NORECOVERY 选项使数据库脱机。
is_copy_only bit 1 = 仅复制备份。 有关详情,请参阅仅复制备份 (SQL Server)
first_recovery_fork_guid uniqueidentifier 起始恢复分叉的 ID。 这对应于 RESTORE HEADERONLY 的 FirstRecoveryForkID

对于数据备份,first_recovery_fork_guid 等于 last_recovery_fork_guid
last_recovery_fork_guid uniqueidentifier 结束恢复分叉的 ID。 这对应于 RESTORE HEADERONLY 的 RecoveryForkID

对于数据备份,first_recovery_fork_guid 等于 last_recovery_fork_guid
fork_point_lsn numeric(25,0) 如果 first_recovery_fork_guid 不等于 last_recovery_fork_guid,这就是分叉点的日志序列号。 否则,该值为 NULL。
database_guid uniqueidentifier 数据库的唯一 ID。 这对应于 RESTORE HEADERONLY 的 BindingID。 还原数据库时,将分配一个新值。
family_guid uniqueidentifier 创建时原始数据库的唯一 ID。 还原数据库时,即使还原为其他名称,此值也保持不变。
differential_base_lsn numeric(25,0) 差异备份的基准 LSN。 对于单基准差异备份;差异备份中将包括大于或等于 differential_base_lsn 的 LSN 的更改。

对于多基准差异备份,此值为 NULL,并且必须在文件级别确定基准 LSN(请参阅 backupfile (Transact-SQL))。

对于非差异备份类型,该值始终为 NULL。
differential_base_guid uniqueidentifier 对于单基准的差异备份,该值为差异基准的唯一标识符。

对于多基准的差异备份,该值为 NULL,并且必须在文件级别确定差异基准。

对于非差异备份类型,该值为 NULL。
compressed_backup_size Numeric(20,0) 磁盘上存储的备份的总字节数。

若要计算压缩率,请使用 compressed_backup_sizebackup_size

msdb在升级过程中,此值设置为 NULL。 表示未压缩的备份。
key_algorithm nvarchar(32) 用于加密备份的加密算法。 NO_Encryption 值指示备份未加密。
encryptor_thumbprint varbinary(20) 可用于在数据库中查找证书或非对称密钥的加密程序的指纹。 在备份未加密的情况下,此值为 NULL。
encryptor_type nvarchar(32) 使用的加密程序的类型:证书或非对称密钥。 在备份未加密的情况下,此值为 NULL。
last_valid_restore_time datetime 事务日志备份中包含的最后一条事务日志记录的时间戳,用于携带时间戳的日志记录。 帮助构建还原计划,帮助查找在语句中RESTORE LOG指定子句时还原的最后STOPAT一个日志备份。 该日志备份的 last_valid_restore_time 严格大于子句中指定的 STOPAT 时间。 在 SQL Server 2022 (16.x) 中引入。
compression_algorithm nvarchar(32) 创建 SQL Server 备份时使用的压缩算法。 在 SQL Server 2022 (16.x) 中引入。 默认值为 MS_XPRESS。 有关详细信息,请参阅 BACKUP COMPRESSION集成加速和卸载

注解

  • RESTORE VERIFYONLY FROM <backup_device> WITH LOADHISTORY 使用媒体集标头中的相应值填充表的 backupmediaset 列。
  • 若要减少此表以及其他备份和历史记录表中的行数,请执行 sp_delete_backuphistory 存储过程。
  • 有关SQL 托管实例,请参阅备份透明度以及如何监视备份

示例

查询备份历史记录

以下查询返回过去两个月成功备份的信息。

SELECT bs.database_name,
    backuptype = CASE 
        WHEN bs.type = 'D' AND bs.is_copy_only = 0 THEN 'Full Database'
        WHEN bs.type = 'D' AND bs.is_copy_only = 1 THEN 'Full Copy-Only Database'
        WHEN bs.type = 'I' THEN 'Differential database backup'
        WHEN bs.type = 'L' THEN 'Transaction Log'
        WHEN bs.type = 'F' THEN 'File or filegroup'
        WHEN bs.type = 'G' THEN 'Differential file'
        WHEN bs.type = 'P' THEN 'Partial'
        WHEN bs.type = 'Q' THEN 'Differential partial'
        END + ' Backup',
    CASE bf.device_type
        WHEN 2 THEN 'Disk'
        WHEN 5 THEN 'Tape'
        WHEN 7 THEN 'Virtual device'
        WHEN 9 THEN 'Azure Storage'
        WHEN 105 THEN 'A permanent backup device'
        ELSE 'Other Device'
        END AS DeviceType,
    bms.software_name AS backup_software,
    bs.recovery_model,
    bs.compatibility_level,
    BackupStartDate = bs.Backup_Start_Date,
    BackupFinishDate = bs.Backup_Finish_Date,
    LatestBackupLocation = bf.physical_device_name,
    backup_size_mb = CONVERT(DECIMAL(10, 2), bs.backup_size / 1024. / 1024.),
    compressed_backup_size_mb = CONVERT(DECIMAL(10, 2), bs.compressed_backup_size / 1024. / 1024.),
    database_backup_lsn, -- For tlog and differential backups, this is the checkpoint_lsn of the FULL backup it is based on.
    checkpoint_lsn,
    begins_log_chain,
    bms.is_password_protected
FROM msdb.dbo.backupset bs
LEFT JOIN msdb.dbo.backupmediafamily bf
    ON bs.[media_set_id] = bf.[media_set_id]
INNER JOIN msdb.dbo.backupmediaset bms
    ON bs.[media_set_id] = bms.[media_set_id]
WHERE bs.backup_start_date > DATEADD(MONTH, - 2, sysdatetime()) --only look at last two months
ORDER BY bs.database_name ASC,
    bs.Backup_Start_Date DESC;

后续步骤