RESTORE 語句 - HEADERONLY (Transact-SQL)
適用於:SQL Server Azure SQL 受控執行個體
傳回結果集,其包含 SQL Server 中含有特定備份裝置上所有備份組的所有備份標頭資訊。
注意
如需引數的描述,請參閱 RESTORE 引數 (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 備份組的描述 |
---|---|---|
BackupName 1 |
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 相同。若要計算壓縮比例,請使用 CompressedBackupSize 和 BackupSize 。在 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