RESTORE HEADERONLY (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 LABELONLY 或指定 FILE =backup_set_file_number。
[!附註]
由於 Microsoft Tape Format 的本質,其他軟體程式的備份組有可能佔用 MicrosoftSQL 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,改用個別的布林資料行 (下列從 HasBulkLoggedData 到 IsCopyOnly 的布林資料行)。
|
NULL |
BindingID |
uniqueidentifier |
資料庫的繫結識別碼。這對應於 sys.databasesdatabase_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 |
起始復原分岔的識別碼。這個資料行對應於 backupset 資料表中的 first_recovery_fork_guid。 對於資料備份而言,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 |
uint64 |
備份組的位元組計數。若是未壓縮的備份,這個值與 BackupSize 相同。 若要計算壓縮比,請使用 CompressedBackupSize 和 BackupSize。 在 msdb 升級期間,這個值會設定為符合 BackupSize 資料行的值。 |
NULL |
[!附註]
如果定義了備份組的密碼,RESTORE HEADERONLY 只會顯示密碼符合命令指定的 PASSWORD 選項的備份組。另外,RESTORE HEADERONLY 也只會顯示未受保護之備份組的完整資訊。媒體中其他受密碼保護之備份組的 BackupName 資料行會設為 '***Password Protected***',所有其他資料行都是 NULL。
備註
用戶端可以利用 RESTORE HEADERONLY 來擷取特定備份裝置上的所有備份之所有備份標頭資訊。對於備份裝置中的每個備份,伺服器會將標頭資訊當做一個資料列來傳送。
權限
從 SQL Server 2008 開始,取得有關備份組或備份裝置的資訊需要 CREATE DATABASE 權限。如需詳細資訊,請參閱<GRANT 資料庫權限 (Transact-SQL)>。
備份作業可以選擇性地指定媒體集的密碼及 (或) 備份組的密碼。在媒體集或備份組上定義密碼時,您必須在 RESTORE 陳述式中,指定一個或多個正確的密碼。這些密碼可以防止他人利用 MicrosoftSQL Server 工具,在未獲授權的情況下,在媒體上執行還原作業及附加備份組。不過,密碼無法防止使用者利用 BACKUP 陳述式的 FORMAT 選項來覆寫媒體。
安全性注意事項 |
---|
這個密碼所提供的保護很弱。這是為了防止已獲授權或未獲授權的使用者使用 SQL Server 工具進行不正確的還原。它無法防止透過其他方式或以取代密碼的方式來讀取備份資料。未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 保護備份的最佳作法是將備份磁帶存放在安全位置,或備份至適當的存取控制清單 (ACL) 所保護的磁碟檔案中。ACL 應該設在備份建立所在的根目錄下。 |
範例
下列範例會傳回磁碟檔 C:\AdventureWorks-FullBackup.bak 標頭中的資訊。
RESTORE HEADERONLY
FROM DISK = N'C:\AdventureWorks-FullBackup.bak'
WITH NOUNLOAD;
GO