web-dev-qa-db-ja.com

データベースを復元するスクリプトでFILE = 1を使用する理由

最近、データベースを復元するためのスクリプトを見つけたとき、なぜ「FILE = 1を使用する必要があるのか​​疑問に思いました。 = "?そのステートメントなしでデータベースを復元することはできません!?基本的に、それは何のために使用されますか?

13

バックアップファイル(デバイスなど)に複数のバックアップを保存できます。 FILE句を使用すると、.bakファイル内から選択するものが複数ある場合に、特定のバックアップ操作にアクセスできます。

[〜#〜] restore [〜#〜] コマンドのさまざまなオプションの詳細については、次のMSDNドキュメントで RESTORE Arguments を参照してください。

Backup Set Optionsセクションの下を見ると、次のことがわかります。

ファイル= {backup_set_file_number| @backup_set_file_number}

復元するバックアップセットを識別します。たとえば、backup_set_file_number1は、バックアップメディア上の最初のバックアップセットと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;
22
Solomon Rutzky