RESTORE HEADERONLY (Transact-SQL)

傳回含有特定備份裝置上的所有備份組之所有備份標頭資訊的結果集。

[!附註]

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

主題連結圖示Transact-SQL 語法慣例

語法

RESTORE HEADERONLY 
FROM <backup_device> 
[ WITH 
 {
--Backup Set Options
   FILE = { backup_set_file_number | @backup_set_file_number } 
 | PASSWORD = { password | @password_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 } = { 'physical_backup_device_name' |
       @physical_backup_device_name_var } 
} 

引數

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

結果集

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

[!附註]

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

[!附註]

由於 Microsoft Tape Format 的本質,其他軟體程式的備份組有可能佔用 Microsoft SQL Server 備份組相同媒體的空間。RESTORE HEADERONLY 傳回的結果集會針對每個這些其他備份組,各包括一個資料列。

資料行名稱

資料類型

SQL Server 備份組的描述

其他備份組的描述

BackupName

nvarchar(128)

備份組名稱

資料集名稱

BackupDescription

nvarchar(255)

備份組描述

資料集描述

BackupType

smallint

備份類型:

1 = 資料庫

2 = 交易記錄

4 = 檔案

5 = 差異資料庫

6 = 差異檔案

7 = 部分

8 = 差異部分

備份類型:

1 = 正常

5 = 差異

16 = 累加

17 = 每天

ExpirationDate

datetime

備份組的到期日。

NULL

Compressed

BYTE(1)

是否利用以軟體為基礎的壓縮來壓縮備份組:

0 = 否

1 = 是

是否利用以軟體為基礎的壓縮來壓縮備份組:

0 = 否

1 = 是

Position

smallint

備份組在磁碟區中的位置 (用來搭配 FILE = 選項)。

備份組在磁碟區中的位置

DeviceType

tinyint

備份作業所用裝置的對應號碼。

磁碟:

2 = 邏輯

102 = 實體

磁帶:

5 = 邏輯

105 = 實體

虛擬裝置:

7 = 邏輯

107 = 實體

邏輯裝置名稱和裝置號碼在 sys.backup_devices 中;如需詳細資訊,請參閱<sys.backup_devices (Transact-SQL)>。

NULL

UserName

nvarchar(128)

執行備份作業的使用者名稱。

執行備份作業的使用者名稱

ServerName

nvarchar(128)

寫入備份組的伺服器名稱。

NULL

DatabaseName

nvarchar(128)

備份的資料庫名稱。

NULL

DatabaseVersion

int

建立備份的來源資料庫版本。

NULL

DatabaseCreationDate

datetime

建立資料庫的日期和時間。

NULL

BackupSize

numeric(20,0)

備份的大小 (以位元組為單位)。

NULL

FirstLSN

numeric(25,0)

備份組中第一個記錄的記錄序號。

NULL

LastLSN

numeric(25,0)

備份組之後下一個記錄的記錄序號。

NULL

CheckpointLSN

numeric(25,0)

在建立備份時,最近的檢查點之記錄序號。

NULL

DatabaseBackupLSN

numeric(25,0)

最近的完整資料庫備份之記錄序號。

DatabaseBackupLSN 是備份啟動時所觸發的「檢查點起點」。如果備份是在資料庫閒置時取得的,且沒有設定任何複寫,這個 LSN 就會與 FirstLSN 一致。

NULL

BackupStartDate

datetime

備份作業開始的日期和時間。

媒體寫入日期

BackupFinishDate

datetime

備份作業完成的日期和時間。

媒體寫入日期

SortOrder

smallint

伺服器排序順序。這個資料行只對資料庫備份有效。提供這個項目的目的,是為了與舊版相容。

NULL

CodePage

smallint

伺服器所用的伺服器字碼頁或字元集。

NULL

UnicodeLocaleId

int

用來排序 Unicode 字元資料的伺服器 Unicode 地區設定識別碼組態選項。提供這個項目的目的,是為了與舊版相容。

NULL

UnicodeComparisonStyle

int

伺服器 Unicode 比較樣式組態選項,用來提供其他 Unicode 資料排序控制。提供這個項目的目的,是為了與舊版相容。

NULL

CompatibilityLevel

tinyint

建立備份的來源資料庫相容性層級設定。

NULL

SoftwareVendorId

int

軟體供應商識別碼。SQL Server 的這個號碼是 4608 (或十六進位的 0x1200)。

軟體供應商識別碼

SoftwareVersionMajor

int

建立備份組的伺服器之主要版本號碼。

建立備份組的軟體之主要版本號碼

SoftwareVersionMinor

int

建立備份組的伺服器之次要版本號碼。

建立備份組的軟體之次要版本號碼

SoftwareVersionBuild

int

建立備份組的伺服器之組建編號。

NULL

MachineName

nvarchar(128)

執行備份作業的電腦名稱。

執行備份作業的電腦類型

Flags

int

若設為 1,個別旗標位元意義如下:

1 = 記錄備份包含大量記錄作業。

2 = 快照集備份。

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

8 = 當備份時,資料庫在單一使用者模式中。

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

32 = 當備份時,資料庫損毀,但要求忽略錯誤,繼續執行備份作業。

64 = 結尾記錄備份。

128 = 結尾記錄備份使用不完整的中繼資料。

256 = 結尾記錄備份使用 NORECOVERY。

重要事項重要事項
建議您不要用 Flags,改用個別的布林資料行 (下列從 HasBulkLoggedDataIsCopyOnly 的布林資料行)。

NULL

BindingID

uniqueidentifier

資料庫的繫結識別碼。這對應於 sys.database_recovery_statusdatabase_guid。當還原資料庫時,會指派一個新值。請參閱 FamilyGUID (下文)。

NULL

RecoveryForkID

uniqueidentifier

結尾復原分岔的識別碼。這個資料行對應於 backupset 資料表中的 last_recovery_fork_guid

對於資料備份而言,RecoveryForkID 等於 FirstRecoveryForkID

NULL

Collation

nvarchar(128)

資料庫所用的定序。

NULL

FamilyGUID

uniqueidentifier

在建立之時,原始資料庫的識別碼。當還原資料庫時,這個值會維持不變。

NULL

HasBulkLoggedData

bit

1 = 包含大量記錄作業的記錄備份。

NULL

IsSnapshot

bit

1 = 快照集備份。

NULL

IsReadOnly

bit

1 = 當備份時,資料庫是唯讀的。

NULL

IsSingleUser

bit

1 = 當備份時,資料庫是單一使用者。

NULL

HasBackupChecksums

bit

1 = 備份包含備份總和檢查碼。

NULL

IsDamaged

bit

1 = 當備份時,資料庫損毀,但要求忽略錯誤,繼續執行備份作業。

NULL

BeginsLogChain

bit

1 = 這是連續記錄備份鏈結中的第一個記錄備份。記錄鏈結的開頭是建立資料庫之後,或從簡單復原模式切換到完整或大量記錄復原模式之後,所取出的第一個記錄備份。

NULL

HasIncompleteMetaData

bit

1 = 包含不完整中繼資料的結尾記錄備份。

如需有關含不完整備份中繼資料之結尾記錄備份的詳細資訊,請參閱<結尾記錄備份>。

NULL

IsForceOffline

bit

1 = 利用 NORECOVERY 取得的備份;資料庫由備份離線取得。

NULL

IsCopyOnly

bit

1 = 僅限複製的備份。

僅限複製備份並不會影響資料庫的整體備份和還原程序。如需詳細資訊,請參閱<只複製備份>。

NULL

FirstRecoveryForkID

uniqueidentifier

起始復原分岔的識別碼。這個資料行對應於 first_recovery_fork_guid 資料表中的 backupset

對於資料備份而言,FirstRecoveryForkID 等於 RecoveryForkID

NULL

ForkPointLSN

numeric(25,0) NULL

如果 FirstRecoveryForkID 不等於 RecoveryForkID,這就是分岔點的記錄序號。否則,這個值是 NULL。

NULL

RecoveryModel

nvarchar(60)

這是資料庫的復原模式,它有下列幾種:

FULL

BULK-LOGGED

SIMPLE

NULL

DifferentialBaseLSN

numeric(25,0) NULL

如果是單一基底差異備份,這個值就等於差異基底的 FirstLSN;LSN 大於或等於 DifferentialBaseLSN 的變更會併入差異備份中。

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

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

如需詳細資訊,請參閱<差異備份的基底>。

NULL

DifferentialBaseGUID

uniqueidentifier

如果是單一基底差異備份,這個值就是差異基底的唯一識別碼。

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

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

NULL

BackupTypeDescription

nvarchar(60)

這是字串備份類型,它有下列幾種:

DATABASE

TRANSACTION LOG

FILE OR FILEGROUP

DATABASE DIFFERENTIAL

FILE DIFFERENTIAL PARTIAL

PARTIAL DIFFERENTIAL

這是字串備份類型,它有下列幾種:

NORMAL

DIFFERENTIAL

INCREMENTAL

DAILY

BackupSetGUID

uniqueidentifier NULL

在媒體中,用來識別備份組的唯一識別碼。

NULL

CompressedBackupSize

bigint

備份組的位元組計數。若是未壓縮的備份,這個值與 BackupSize 相同。

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

msdb 升級期間,這個值會設定為符合 BackupSize 資料行的值。

NULL

[!附註]

如果定義了備份組的密碼,RESTORE HEADERONLY 只會顯示密碼符合命令指定的 PASSWORD 選項的備份組。另外,RESTORE HEADERONLY 也只會顯示未受保護之備份組的完整資訊。媒體中其他受密碼保護之備份組的 BackupName 資料行會設為 '***Password Protected***',所有其他資料行都是 NULL。

備註

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

權限

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

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

安全性注意事項安全性注意事項

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

範例

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

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