RESTORE HEADERONLY (Transact-SQL)
傳回含有特定備份裝置上的所有備份組之所有備份標頭資訊的結果集。
[!附註]
如需引數的描述,請參閱<RESTORE 引數 (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 = 差異部分 |
||
ExpirationDate |
datetime |
備份組的到期日。 |
||
Compressed |
BYTE(1) |
是否利用以軟體為基礎的壓縮來壓縮備份組: 0 = 否 1 = 是 |
||
Position |
smallint |
備份組在磁碟區中的位置 (用來搭配 FILE = 選項)。 |
||
DeviceType |
tinyint |
備份作業所用裝置的對應號碼。 磁碟: 2 = 邏輯 102 = 實體 磁帶: 5 = 邏輯 105 = 實體 虛擬裝置: 7 = 邏輯 107 = 實體 邏輯裝置名稱和裝置號碼在 sys.backup_devices 中;如需詳細資訊,請參閱<sys.backup_devices (Transact-SQL)>。 |
||
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,個別旗標位元意義如下: 1 = 記錄備份包含大量記錄作業。 2 = 快照集備份。 4 = 當備份時,資料庫是唯讀的。 8 = 當備份時,資料庫在單一使用者模式中。 16 = 備份包含備份總和檢查碼。 32 = 當備份時,資料庫損毀,但要求忽略錯誤,繼續執行備份作業。 64 = 結尾記錄備份。 128 = 結尾記錄備份使用不完整的中繼資料。 256 = 結尾記錄備份使用 NORECOVERY。
|
||
BindingID |
uniqueidentifier |
資料庫的繫結識別碼。 這對應於 sys.database_recovery_status database_guid。 當還原資料庫時,會指派一個新值。 請參閱 FamilyGUID (下文)。 |
||
RecoveryForkID |
uniqueidentifier |
結尾復原分岔的識別碼。 這個資料行對應於 backupset 資料表中的 last_recovery_fork_guid。 對於資料備份而言,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 |
起始復原分岔的識別碼。 這個資料行對應於 backupset 資料表中的 first_recovery_fork_guid。 對於資料備份而言,FirstRecoveryForkID 等於 RecoveryForkID。 |
||
ForkPointLSN |
numeric(25,0) NULL |
如果 FirstRecoveryForkID 不等於 RecoveryForkID,這就是分岔點的記錄序號。 否則,這個值是 NULL。 |
||
RecoveryModel |
nvarchar(60) |
這是資料庫的復原模式,它有下列幾種: FULL BULK-LOGGED SIMPLE |
||
DifferentialBaseLSN |
numeric(25,0) NULL |
如果是單一基底差異備份,這個值就等於差異基底的 FirstLSN;LSN 大於或等於 DifferentialBaseLSN 的變更會併入差異備份中。 如果是多重基底差異備份,這個值就是 NULL,基底 LSN 必須取決於檔案層級。 如需詳細資訊,請參閱<RESTORE FILELISTONLY (Transact-SQL)>。 如果是非差異備份類型,這個值一律是 NULL。 如需詳細資訊,請參閱<差異備份 (SQL Server)>。 |
||
DifferentialBaseGUID |
uniqueidentifier |
如果是單一基底差異備份,這個值就是差異基底的唯一識別碼。 如果是多重基底差異備份,這個值就是 NULL,差異基底必須取決於個別檔案。 如果是非差異備份類型,這個值就是 NULL。 |
||
BackupTypeDescription |
nvarchar(60) |
這是字串備份類型,它有下列幾種: DATABASE TRANSACTION LOG FILE OR FILEGROUP DATABASE DIFFERENTIAL FILE DIFFERENTIAL PARTIAL PARTIAL DIFFERENTIAL |
||
BackupSetGUID |
uniqueidentifier NULL |
在媒體中,用來識別備份組的唯一識別碼。 |
||
CompressedBackupSize |
bigint |
備份組的位元組計數。 若是未壓縮的備份,這個值與 BackupSize 相同。 若要計算壓縮比,請使用 CompressedBackupSize 和 BackupSize。 在 msdb 升級期間,這個值會設定為符合 BackupSize 資料行的值。 |
||
containment |
tinyint 非 NULL |
指示資料庫的內含項目狀態。 0 = 資料庫內含項目已關閉 1 = 資料庫內含項目是部分 |
[!附註]
如果定義了備份組的密碼,RESTORE HEADERONLY 只會顯示密碼符合命令指定的 PASSWORD 選項的備份組。 另外,RESTORE HEADERONLY 也只會顯示未受保護之備份組的完整資訊。 媒體中其他受密碼保護之備份組的 BackupName 資料行會設為 '***Password Protected***',所有其他資料行都是 NULL。
一般備註
用戶端可以利用 RESTORE HEADERONLY 來擷取特定備份裝置上的所有備份之所有備份標頭資訊。 對於備份裝置中的每個備份,伺服器會將標頭資訊當做一個資料列來傳送。
安全性
備份作業可以選擇性地指定媒體集的密碼及 (或) 備份組的密碼。 當在媒體集或備份組上定義密碼時,您必須在 RESTORE 陳述式中,指定一個或多個正確的密碼。 這些密碼可以防止他人利用 Microsoft SQL Server 工具,在未獲授權的情況下,於媒體上執行還原作業及附加備份組。 不過,密碼無法防止使用者利用 BACKUP 陳述式的 FORMAT 選項來覆寫媒體。
安全性注意事項 |
---|
這個密碼所提供的保護很弱。 這是為了防止已獲授權或未獲授權的使用者使用 SQL Server 工具進行不正確的還原。 它無法防止透過其他方式或以取代密碼的方式來讀取備份資料。 未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 保護備份的最佳作法是將備份磁帶存放在安全位置,或備份至適當的存取控制清單 (ACL) 所保護的磁碟檔案中。 ACL 應該設在備份建立所在的根目錄下。 |
權限
從 SQL Server 2008 開始,取得有關備份組或備份裝置的資訊需要 CREATE DATABASE 權限。 如需詳細資訊,請參閱<GRANT 資料庫權限 (Transact-SQL)>。
範例
下列範例會傳回磁碟檔 C:\AdventureWorks-FullBackup.bak 標頭中的資訊。
RESTORE HEADERONLY
FROM DISK = N'C:\AdventureWorks-FullBackup.bak'
WITH NOUNLOAD;
GO
請參閱
參考
RESTORE REWINDONLY (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)