• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MSDE 一括リストアについて)

MSDE一括リストアについて

このQ&Aのポイント
  • MSDEを動かしていたサーバーが壊れ、バックアップデータが残っている状況です。
  • 新規PCにMSDEをインストールして運用し、過去のバックアップデータをリストアしたいと考えています。
  • バックアップファイルを自動で全てリストアする方法を探しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

先日バックアップの方で書き込みをしましたが、バックアップファイル名が違うところを見ると、別のMSDEですか? (まさか300個以上もあるとは思わなかったですが、全DBのバックアップで負荷がかかりすぎて壊れたなんてことはないことを祈ります) 個人的にはリストアの自動化という発想自体はあまりお勧めできないです。。リスクが高すぎますから。 とはいえ。今回はそうも言ってられないと思いますので、また懲りずにコメントします。 バックアップのときは、MSDE内にあるデータベースの一覧に基づいて処理をするということで、全部データベース側でやらせましたが、 今回のはMSDE内にはまだデータベースはなく、ファイルのみがあるということなので、方法は2つです。 1) xp_cmdshellを使って、データベース側でファイルリストを読みだし、ループしてリストアコマンドを生成し実行する 2) Windowsコマンドで先にスクリプトを作成してしまい、まとめて実行する xp_cmdshellは管理方針によっては嫌がられることも多いので、2)のサンプルです(バッチファイル)。 --------------------------------------------------------------------------------------------------------- @ECHO OFF SET WORKLOC=(ワーク用のフォルダのフルパス) SET BACKUPLOC=(バックアップファイルを置いたフォルダのフルパス) DIR /B %BACKUPLOC% > %WORKLOC%\FILELIST.txt TYPE nul > %WORKLOC%\COMMAND.sql FOR /F "tokens=1 delims=." %%i IN (%WORKLOC%\FILELIST.txt) DO ECHO RESTORE DATABASE [%%i] FROM DISK='%BACKUPLOC%\%%i.bak' WITH REPLACE >> %WORKLOC%\COMMAND.sql & ECHO GO >> %WORKLOC%\COMMAND.sql osql -E -S(サーバ名) -i%WORKLOC%\COMMAND.sql > %WORKLOC%\RESTORE.log SET WORKLOC= SET BACKUPLOC= --------------------------------------------------------------------------------------------------------- バッチコマンドなので、見ればお分かりかと思いますが、 RESTORE DATABASE [xxxxxx] FROM DISK='xxxxxx.bak' WITH REPLACE GO というコマンドをバックアップファイル数分生成してスクリプトファイルに書き出し、それを実行しているだけです。 osqlを実行している行だけREMでコメントアウトすれば、実行前に生成したスクリプトを確認できます。 繰り返しになりますが、リストアは慎重にテストしてください。

matupo69
質問者

お礼

jamshid6様 返事が遅れてすみませんでした、 jamshid6様の公開されたスクリプトをしようする事で 希望通りの事が出来ました。 今回もお知恵をお借りできてホントに助かりました 有難うございます。

関連するQ&A