RESTORE 語句 - HEADERONLY (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

傳回結果集,其包含 SQL Server 中含有特定備份裝置上所有備份組的所有備份標頭資訊。

注意

如需引數的描述,請參閱 RESTORE 引數 (Transact-SQL)

Transact-SQL 語法慣例

Syntax

RESTORE HEADERONLY
FROM <backup_device>
[ WITH
    {
    -- Backup set options
    FILE = { backup_set_file_number | @backup_set_file_number }
    | PASSWORD = { password | @password_variable }
    | [ METADATA_ONLY | SNAPSHOT ] [ DBNAME = { database_name | @database_name_variable } ]

    -- Media set options
    | MEDIANAME = { media_name | @media_name_variable }
    | MEDIAPASSWORD = { mediapassword | @mediapassword_variable }

    -- Error management options
    | { CHECKSUM | NO_CHECKSUM }
    | { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }

    -- Tape options
    | { REWIND | NOREWIND }
    | { UNLOAD | NOUNLOAD }
    } [ , ...n ]
]
[ ; ]

<backup_device> ::=
{
   { logical_backup_device_name |
     @logical_backup_device_name_var }
   | { DISK | TAPE | URL } = { 'physical_backup_device_name' |
       @physical_backup_device_name_var }
}

注意

URL是用來指定位置及 Azure Blob 儲存體 檔名的格式,且從 SQL Server 2012 (11.x) SP 1 CU 2 開始支援。 雖然 Azure 記憶體是一項服務,但實作類似於磁碟和磁帶,可讓這三個裝置都能有一致且順暢的還原體驗。

引數

如需自變數的描述 RESTORE HEADERONLY ,請參閱 RESTORE 自變數 (Transact-SQL)

結果集

對於給定裝置中的每個備份,伺服器都會傳送一個含有下列資料行的標頭資訊資料列:

資料行名稱 資料類型 SQL Server 備份組的描述
BackupName1 nvarchar(128) 備份組名稱
BackupDescription nvarchar(255) 備份組描述 可以是 NULL。
BackupType smallint 備份類型:

1 = 資料庫
2 = 交易記錄
4 = 檔案
5 = 差異資料庫
6 = 差異檔案
7 = 部分
8 = 差異部分
ExpirationDate datetime 備份組的到期日。
Compressed bit 是否利用以軟體為基礎的壓縮來壓縮備份組:

0 = 否
1 = 是
Position smallint 備份組在磁碟區中的位置 (用來搭配 FILE = 選項)。
DeviceType tinyint 備份作業所用裝置的對應號碼。

磁碟:

- 2 = 邏輯
- 102 = 實體

磁帶:

- 5 = 邏輯
- 105 = 實體

虛擬裝置:

- 7 = 邏輯
- 107 = 實體

URL:

- 9 = 邏輯
- 109 = 實體

邏輯裝置名稱和裝置號碼位於 sys.backup_devices中。 如需詳細資訊,請參閱 sys.backup_devices
UserName nvarchar(128) 執行備份作業的使用者名稱。
ServerName nvarchar(128) 寫入備份組的伺服器名稱。
DatabaseName nvarchar(128) 備份的資料庫名稱。
DatabaseVersion int 建立備份的來源資料庫版本。
DatabaseCreationDate datetime 建立資料庫的日期和時間。
BackupSize numeric(20,0) 備份的大小 (以位元組為單位)。
FirstLSN numeric(25,0) 備份組中第一個記錄的記錄序號。
LastLSN numeric(25,0) 備份組之後下一個記錄檔記錄的記錄序號。
CheckpointLSN numeric(25,0) 在建立備份時,最近的檢查點之記錄序號。
DatabaseBackupLSN numeric(25,0) 最近的完整資料庫備份之記錄序號。

DatabaseBackupLSN 是備份啟動時所觸發的「檢查點開始」。 如果資料庫閑置且未設定任何復寫,則此 LSN 會與 FirstLSN 備份一致。
BackupStartDate datetime 備份作業開始的日期和時間。
BackupFinishDate datetime 備份作業完成的日期和時間。
SortOrder smallint 伺服器排序順序。 這個資料行只對資料庫備份有效。 提供這個項目的目的,是為了與舊版相容。
CodePage smallint 伺服器所用的伺服器字碼頁或字元集。
UnicodeLocaleId int 用來排序 Unicode 字元資料的伺服器 Unicode 地區設定識別碼組態選項。 提供這個項目的目的,是為了與舊版相容。
UnicodeComparisonStyle int 伺服器 Unicode 比較樣式組態選項,用來提供其他 Unicode 資料排序控制。 提供這個項目的目的,是為了與舊版相容。
CompatibilityLevel tinyint 建立備份的來源資料庫相容性層級設定。
SoftwareVendorId int 軟體供應商識別碼。 對於 SQL Server,這個數位是 4608 (或十六進位 0x1200)。
SoftwareVersionMajor int 建立備份組的伺服器之主要版本號碼。
SoftwareVersionMinor int 建立備份組的伺服器之次要版本號碼。
SoftwareVersionBuild int 建立備份組的伺服器之組建編號。
MachineName nvarchar(128) 執行備份作業的電腦名稱。
Flags int 個別旗標位意義:

- 1 = 記錄備份包含大容量日誌作業。

- 2 = 快照集備份。

- 4 = 備份時,資料庫是唯讀的。

- 8 = 資料庫在備份時處於單一使用者模式。

- 16 = 備份包含備份總和檢查碼。

- 32 = 備份時資料庫已損毀,但儘管發生錯誤,仍要求備份作業繼續。

- 64 = 尾日誌備份。

- 128 = 具有不完整元數據的尾日誌備份。

- 256 = 使用 NORECOVERY 進行尾日誌備份。

重要事項: 我們建議您不要 Flags 使用個別布爾數據行(從此表格的 開頭 HasBulkLoggedData 和結尾 IsCopyOnly )。
BindingID uniqueidentifier 資料庫的繫結識別碼。 這個值會對應至 database_guid 中的 sys.database_recovery_status。 當還原資料庫時,會指派一個新值。 另請參閱 FamilyGUID
RecoveryForkID uniqueidentifier 結尾復原分岔的識別碼。 此資料列會對應至 last_recovery_fork_guid backupset 資料表中的

針對資料備份, RecoveryForkID 等於 FirstRecoveryForkID
Collation nvarchar(128) 資料庫所用的定序。
FamilyGUID uniqueidentifier 在建立之時,原始資料庫的識別碼。 當還原資料庫時,這個值會維持不變。
HasBulkLoggedData bit 1 = 包含大量記錄作業的記錄備份。
IsSnapshot bit 1 快照集備份。
IsReadOnly bit 1 = 備份時,資料庫是唯讀的。
IsSingleUser bit 1 = 備份時,資料庫是單一使用者。
HasBackupChecksums bit 1 = 備份包含備份總和檢查碼。
IsDamaged bit 1 = 備份時,資料庫損毀,但要求備份作業忽略錯誤並繼續執行。
BeginsLogChain bit 1 = 這是連續記錄備份鏈結中的第一個記錄備份。 記錄鏈結會從建立資料庫之後所建立的第一個記錄備份開始,或從 [簡單] 切換到 [完整] 或 [大容量日誌恢復模式] 時。
HasIncompleteMetaData bit 1 = 包含不完整中繼資料的結尾記錄備份。

如需含不完整備份中繼資料的結尾記錄備份資訊,請參閱結尾記錄備份 (SQL Server)
IsForceOffline bit 1 = 使用 NORECOVERY 來進行的備份;資料庫因備份而離線。
IsCopyOnly bit 1 = 僅限複製的備份。

僅限複製備份不會影響資料庫的整體備份和還原程式。 如需詳細資訊,請參閱僅限複製備份 (SQL Server)
FirstRecoveryForkID uniqueidentifier 起始復原分岔的識別碼。 此資料列會對應至 first_recovery_fork_guid backupset 資料表中的

針對資料備份, FirstRecoveryForkID 等於 RecoveryForkID
ForkPointLSN numeric(25,0) 如果 FirstRecoveryForkID 不等於 RecoveryForkID,這個值就是分岔點的記錄序號。 否則,這個值是 NULL。
RecoveryModel nvarchar(60) 資料庫的恢復模式,其中一種:

-全
- BULK-LOGGED
-簡單
DifferentialBaseLSN numeric(25,0) 對於單一式差異備份,值等於 FirstLSN 差異基底的 。 差異中包含大於或等於 DifferentialBaseLSN LSN 的變更。

如果是多重基底差異備份,這個值就是 NULL,基底 LSN 必須取決於檔案層級。 如需詳細資訊,請參閱 RESTORE FILELISTONLY

如果是非差異備份類型,這個值一律是 NULL。

如需詳細資訊,請參閱差異備份 (SQL Server)
DifferentialBaseGUID uniqueidentifier 如果是單一基底差異備份,這個值就是差異基底的唯一識別碼。

如果是多重基底差異備份,這個值就是 NULL,差異基底必須取決於個別檔案。

如果是非差異備份類型,這個值就是 NULL。
BackupTypeDescription nvarchar(60) 這是字串備份類型,它有下列幾種:

-資料庫
- 事務歷史記錄
- 檔案或 FILEGROUP
- DATABASE DIFFERENTIAL
- 檔案差異部分
- 部分差異
BackupSetGUID uniqueidentifier 在媒體中,用來識別備份組的唯一識別碼。 可以是 NULL。
CompressedBackupSize bigint 備份組的位元組計數。 針對未壓縮的備份,此值與 BackupSize相同。

若要計算壓縮比例,請使用 CompressedBackupSizeBackupSize

msdb 升級期間,此值會設定為符合數據行的值 BackupSize
containment tinyint 適用於:SQL Server 2012 (11.x) 和更新版本。

指示資料庫的內含項目狀態。

0 = 資料庫內含項目已關閉
1 = 資料庫內含項目是部分
KeyAlgorithm nvarchar(32) 適用於:SQL Server 2014 (12.x) CU 1 和更新版本。

用於加密備份的加密演算法。 NO_Encryption表示備份未加密。 當無法判斷正確的值時,值應該是 NULL。
EncryptorThumbprint varbinary(20) 適用於:SQL Server 2014 (12.x) CU 1 和更新版本。

加密程序的指紋,可用來在資料庫中尋找憑證或非對稱密鑰。 未加密備份時,此值為 NULL。
EncryptorType nvarchar(32) 適用於:SQL Server 2014 (12.x) CU 1 和更新版本。

使用的加密程式類型:憑證或非對稱金鑰。 未加密備份時,此值為 NULL。
LastValidRestoreTime datetime 適用於:SQL Server 2022 (16.x) 和更新版本。

上次有效的還原時間。
TimeZone nvarchar(32) 適用於:SQL Server 2022 (16.x) 和更新版本。

從中取得備份的伺服器時區。
CompressionAlgorithm nvarchar(32) 適用於:SQL Server 2022 (16.x) 和更新版本。

識別用來壓縮備份檔案的壓縮演算法。 預設值為 MS_XPRESS。 如需詳細資訊,請參閱 BACKUP

1 如果為備份集定義密碼, RESTORE HEADERONLY 則只會針對密碼符合命令指定 PASSWORD 選項的備份集顯示完整資訊。 RESTORE HEADERONLY 也會顯示未受保護的備份集的完整資訊。 媒體 BackupName 上其他受密碼保護備份集的數據行會設定為 'Password Protected',而所有其他數據行都是 NULL。

備註

用戶端可用來 RESTORE HEADERONLY 擷取特定備份裝置上所有備份的所有備份標頭資訊。 對於備份裝置中的每個備份,伺服器會將標頭資訊當做一個資料列來傳送。

RESTORE HEADERONLY 查看媒體上的所有備份集。 因此,當使用高容量磁帶機時,產生這個結果集可能需要一些時間。 若要快速檢視媒體,而不需取得每個備份集的相關信息,請使用 RESTORE LABELONLY 或指定 FILE = <backup_set_file_number>

由於 Microsoft 磁帶格式的性質,其他軟體程式的備份集可能會佔用與 SQL Server 備份集相同的媒體空間。 所 RESTORE HEADERONLY 傳回的結果集包含每個其他備份集的數據列。

安全性

備份作業可以選擇性地指定媒體集的密碼及 (或) 備份組的密碼。 當在媒體集或備份組上定義密碼時,您必須在 RESTORE 陳述式中,指定一個或多個正確的密碼。 這些密碼可以防止他人使用 SQL Server 工具,於未獲授權的情況下,在媒體上執行還原作業及附加備份組。 不過,密碼不會防止使用BACKUP語句的FORMAT選項覆寫媒體。

重要

這個密碼所提供的保護很弱。 這是為了防止已獲授權或未獲授權的使用者使用 SQL Server 工具進行不正確的還原。 它無法防止透過其他方式或以取代密碼的方式來讀取備份資料。 SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並計劃修改目前正在使用此功能的應用程式。保護備份的最佳做法,是將備份磁帶儲存在安全的位置,或將其備份到受適當存取控制清單 (ACL) 保護的磁碟檔案。 ACL 應該設在備份建立所在的根目錄下。

權限

取得有關備份組或備份裝置的資訊需要 CREATE DATABASE 權限。 如需詳細資訊,請參閱 GRANT 資料庫權限 (Transact-SQL)

範例

下列範例會傳回磁碟檔 C:\AdventureWorks-FullBackup.bak 標頭中的資訊。

RESTORE HEADERONLY
FROM DISK = N'C:\AdventureWorks-FullBackup.bak';
GO

另請參閱