RESTORE ステートメント - HEADERONLY (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
SQL Server で特定のバックアップ デバイス上にあるすべてのバックアップ セットについて、すべてのバックアップ ヘッダー情報を含む結果セットを返します。
Note
引数の説明については、「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 }
| [ 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 バックアップ セットの場合の説明 |
---|---|---|
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 ロケール 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_status の database_guid に対応します。 データベースが復元されると、新しい値が割り当てられます。 「FamilyGUID 」も参照してください。 |
RecoveryForkID |
uniqueidentifier | 最後の復旧分岐の ID。 この列は、backupset テーブル内の last_recovery_fork_guid に対応します。データのバックアップでは、 RecoveryForkID は FirstRecoveryForkID と同じです。 |
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 に対応します。データのバックアップでは、 FirstRecoveryForkID は RecoveryForkID と同じです。 |
ForkPointLSN |
numeric(25,0) | FirstRecoveryForkID が RecoveryForkID に等しくない場合、この値はフォーク ポイントのログ シーケンス番号になります。 これらが同じである場合、この値は 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 と同じです。圧縮率を計算するには、 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 です。 詳細については、バックアップに関するページを参照してください。 |
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