最近、データベースを復元するスクリプトに出くわしたとき、「FILE = 1」を使用する必要があるのか疑問に思いました。そのステートメントなしでデータベースを復元することはできません!?基本的に、それは何のために使用されますか?
最近、データベースを復元するスクリプトに出くわしたとき、「FILE = 1」を使用する必要があるのか疑問に思いました。そのステートメントなしでデータベースを復元することはできません!?基本的に、それは何のために使用されますか?
回答:
バックアップファイル(デバイス)に複数のバックアップを保存できます。このFILE
句を使用すると、.bak
ファイル内に複数の選択肢がある場合に特定のバックアップ操作にアクセスできます。
RESTOREコマンドのさまざまなオプションの詳細については、RESTORE Argumentsに関する次のMSDNドキュメントを参照してください。
[ バックアップセットオプション]セクションの下を見ると、次のことがわかります。
FILE = { backup_set_file_number | @ backup_set_file_number }
復元するバックアップセットを識別します。たとえば、backup_set_file_numberの1は、バックアップメディア上の最初のバックアップセットを示し、backup_set_file_numberの2は2番目のバックアップセットを示します。RESTORE HEADERONLYステートメントを使用して、バックアップセットのbackup_set_file_numberを取得できます。
指定しない場合、デフォルトは1です。ただし、RESTORE HEADERONLYを除き、メディアセット内のすべてのバックアップセットが処理されます。詳細については、このトピックの「バックアップセットの指定」を参照してください。
重要
このFILEオプションは、データベースファイルを指定するFILEオプションとは無関係です。FILE = { logical_file_name_in_backup | @ logical_file_name_in_backup_var }。
はい、とにかくデフォルトのままでなくてFILE = 1
も復元できるはず1
です。バックアップファイルにバックアップセットが1つしかない場合でも、問題は発生しません。
このFILE
オプションをいつ使用するかを説明するのに役立つ例は次のとおりです。これは、RESTOREコマンドのMSDNページ(上記のリンク)の例Bです。1つのバックアップファイルから2つの復元を実行することを示しています。1つ目RESTORE
は完全バックアップで、2つ目RESTORE
は差分バックアップです。
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 9
RECOVERY;