web-dev-qa-db-ja.com

別のマシンの.bakファイルからデータベースを復元する

私はSQLをあまり行っていませんが、これはまだかなり新しいので、おそらく基本的な質問は何でしょうか。

データベースをバックアップし、.baksを別のマシンに保存してから、それらを2番目のサーバーに復元するSQLジョブの作成を検討するように依頼されました。私は少し調査を行い、SSMSで遊んでおり、共有を設定し、共有の場所にバックアップジョブを実行することで、データベースを個人のマシンにバックアップしました。 .bakファイルを復元して(バックアップ元と同じサーバー上に)新しいデータベースを作成しようとしていますが(ただし、データベースに新しい名前を付けようとしています)、できませんバックアップ時に行ったように、共有からの復元を指定する/他のネットワークの場所を指定する方法が見つからず、ファイルを見つけようとしたときにサーバーのCドライブを参照しているだけです。

今のところ、これを実現するために組み込みのウ​​ィザードを使用しています([SSMS]-> [サーバーに接続]-> [データベース]を右クリック-> [データベースの復元]を選択し、[デバイスから]を選択してファイルを参照します)。

これは最終的なプロセスではなく、これがどのように機能するかを理解しようとしているだけです。私が言ったように、アイデアは最終的に、DBをserver1から.bakにバックアップし、それをserver2(異なるネットワーク、異なる都市)のDBに復元し、おそらく、毎回ウィザードを使用するのではなく、一連のSQLコマンドを使用します(最終的にバックアップが必要なDBがいくつかあります)。

おそらくかなり引き出されて複雑な質問についてお詫びします-基本的に、私が知る必要があるのは、別のマシンの.bakからSSMSのDBを復元できるかどうかです。どうもありがとう

12
cprlkleg

次のスクリプトのようなものを使用できます。ファイルシステムからデータベースを復元し、既存のデータベースを「MyDB」という名前で上書きして、プロセス内で選択した新しい場所にファイルを移動します。

 RESTORE DATABASE 
 MyDB 
 FROM DISK = '\\ MyShare\MyBackup.bak' 
 WITH 
 MOVE'DataFile 'TO'D:\ myNewDBLocation\DataFile.mdf '、
 MOVE' LogFile'TO 'E:\\ myNewDBLocation\LogFile.ldf' 
、REPLACE 

Llogicalファイルの名前を見つけることができます(上記では、以下を実行することで、それらはDataFileおよびLogFileと呼ばれます。

ファイルリストのみを復元
ディスクから= '\\ MyShare\MyBackup.bak' 

さまざまなオプションとパラメータに関する追加情報:

RESTORE(Transact-SQL)

30
SchmitzIT