RESTORE ステートメント - HEADERONLY (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

SQL Server で特定のバックアップ デバイス上にあるすべてのバックアップ セットについて、すべてのバックアップ ヘッダー情報を含む結果セットを返します。

Note

引数の説明については、「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 }
    | [ 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 }
}

Note

URL は、Azure Blob Storage の場所とファイル名を指定するために使われる形式であり、SQL Server 2012 (11.x) SP1 CU2 以降でサポートされています。 Azure Storage はサービスですが、実装はディスクやテープと似ており、3 つのデバイスすべてで一貫したシームレスな復元エクスペリエンスを実現できます。

引数

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 ロケール ID 構成オプション。 これは旧バージョンとの互換性のために用意されています。
UnicodeComparisonStyle int Unicode データの並べ替えに詳細な設定を追加できる、サーバー Unicode 比較スタイル構成オプション。 これは旧バージョンとの互換性のために用意されています。
CompatibilityLevel tinyint バックアップの作成元であるデータベースの互換性レベル設定。
SoftwareVendorId int ソフトウェア ベンダーの識別番号。 SQL Server の場合、この値は 4608 (16 進数では 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 データベースに割り当てられたバインド ID。 この値は、sys.database_recovery_statusdatabase_guid に対応します。 データベースが復元されると、新しい値が割り当てられます。 「FamilyGUID」も参照してください。
RecoveryForkID uniqueidentifier 最後の復旧分岐の ID。 この列は、backupset テーブル内の last_recovery_fork_guid に対応します。

データのバックアップでは、RecoveryForkIDFirstRecoveryForkID と同じです。
Collation nvarchar(128) データベースで使用されている照合順序。
FamilyGUID uniqueidentifier 元のデータベースに関する作成時の ID。 この値は、データベースが復元されても変わりません。
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 最初の復旧分岐の ID。 この列は、backupset テーブルの first_recovery_fork_guid に対応します。

データのバックアップでは、FirstRecoveryForkIDRecoveryForkID と同じです。
ForkPointLSN numeric(25,0) FirstRecoveryForkIDRecoveryForkID に等しくない場合、この値はフォーク ポイントのログ シーケンス番号になります。 これらが同じである場合、この値は NULL になります。
RecoveryModel nvarchar(60) データベースの復旧モデル。次のいずれかになります。

- FULL
- BULK-LOGGED
- SIMPLE
DifferentialBaseLSN numeric(25,0) シングル ベースの差分バックアップの場合、値は差分ベースの FirstLSN と等しくなります。 LSN が DifferentialBaseLSN 以上である変更は、差分に含まれます。

マルチ ベースの差分バックアップの場合、この値は NULL です。ベース LSN はファイル レベルで決定される必要があります。 詳細については、RESTORE FILELISTONLY に関するページを参照してください。

差分バックアップ以外の種類のバックアップの場合は常に 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 と同じです。

圧縮率を計算するには、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 です。 詳細については、バックアップに関するページを参照してください。

1 バックアップ セットにパスワードが定義されている場合、RESTORE HEADERONLY によって完全な情報が返されるのは、コマンドの PASSWORD オプションと同じパスワードが指定されているバックアップ セットのみです。 また、保護されていないバックアップ セットについても、RESTORE HEADERONLY は完全な情報を示します。 メディア上にある、他のパスワードで保護されたバックアップ セットの BackupName 列は 'Password Protected' に設定され、他の列はすべて NULL になります。

解説

クライアントは RESTORE HEADERONLY を使って、特定のバックアップ デバイス上のすべてのバックアップについて、バックアップ ヘッダーに関するすべての情報を取得できます。 バックアップ デバイス上にあるバックアップごとに、ヘッダー情報が 1 行のデータとしてサーバーから送信されます。

RESTORE HEADERONLY では、メディア上のすべてのバックアップ セットが確認されます。 そのため、大容量のテープ ドライブを使用している場合は結果セットの生成に時間がかかることがあります。 バックアップ セットごとの情報を取得せずにメディアの内容をすばやく確認するには、RESTORE LABELONLY を使うか、FILE = <backup_set_file_number> を指定します。

Microsoft Tape Format の特性により、他のソフトウェア プログラムからのバックアップ セットと SQL Server のバックアップ セットが同じメディア上の領域に記録されている場合があります。 RESTORE HEADERONLY によって返される結果セットには、その他のバックアップ セットの情報も 1 件につき 1 行ずつ含まれます。

セキュリティ

バックアップ操作では、オプションで、メディア セットとバックアップ セットにそれぞれパスワードを設定できます。 メディア セットまたはバックアップ セットにパスワードが設定されている場合は、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

関連項目