最近、データベースを復元するためのスクリプトを見つけたとき、なぜ「FILE = 1を使用する必要があるのか疑問に思いました。 = "?そのステートメントなしでデータベースを復元することはできません!?基本的に、それは何のために使用されますか?
バックアップファイル(デバイスなど)に複数のバックアップを保存できます。 FILE
句を使用すると、.bak
ファイル内から選択するものが複数ある場合に、特定のバックアップ操作にアクセスできます。
[〜#〜] restore [〜#〜] コマンドのさまざまなオプションの詳細については、次のMSDNドキュメントで RESTORE Arguments を参照してください。
Backup Set Optionsセクションの下を見ると、次のことがわかります。
ファイル= {backup_set_file_number| @backup_set_file_number}
復元するバックアップセットを識別します。たとえば、backup_set_file_numberの1は、バックアップメディア上の最初のバックアップセットとbackup_set_file_numberof2は、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 です。これは、単一のバックアップファイルから2つの復元を実行することを示しています。最初の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;