backupset (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體Analytics Platform System (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中的FILE(Transact-SQL)。
expiration_date datetime 備份組到期的日期和時間。 可以是 NULL。
software_vendor_id int 撰寫備份媒體標頭之軟體廠商的標識碼。 可以是 NULL。
name nvarchar(128) 備份組的名稱。 可以是 NULL。
description 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 是UTC之後的東部標準時間 (EST) 或5小時。 可以是 NULL。
mtf_minor_version tinyint Microsoft Tape Format 次要版本號碼。 可以是 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 中 ,旗標數據 行已被取代,並取代為下列位數據行:

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

簡單
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 = 具有不完整元數據的尾日誌備份。 如需詳細資訊,請參閱 結尾記錄備份 (SQL Server)
is_force_offline bit 1 = 建立備份時,使用NORECOVERY 選項脫機資料庫。
is_copy_only bit 1 = 僅限複製的備份。 如需詳細資訊,請參閱僅限複製備份 (SQL Server)
first_recovery_fork_guid uniqueidentifier 開始復原分支的標識碼。 這會對應至 RESTORE HEADERONLY 的 FirstRecoveryForkID

針對數據備份, first_recovery_fork_guid 等於 last_recovery_fork_guid
last_recovery_fork_guid uniqueidentifier 結束復原分支的標識碼。 這會對應至 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 資料庫的唯一標識碼。 這會對應至 RESTORE HEADERONLY 的 BindingID 。 還原資料庫時,會指派新的值。
family_guid uniqueidentifier 建立時原始資料庫的唯一標識碼。 當資料庫還原時,這個值會維持不變,即使是不同的名稱也一樣。
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 數值(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;

下一步