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_size 和 backup_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;
后续步骤
- BACKUP (Transact-SQL)
- RESTORE 语句 (Transact-SQL)
- 备份和还原表 (Transact-SQL)
- backupfile (Transact-SQL)
- backupfilegroup (Transact-SQL)
- backupmediafamily (Transact-SQL)
- backupmediaset (Transact-SQL)
- 备份和还原期间可能出现的媒体错误 (SQL Server)
- 介质集、介质簇和备份集 (SQL Server)
- 恢复模式 (SQL Server)
- RESTORE HEADERONLY (Transact-SQL)
- 备份和还原表 (Transact-SQL)