TFS Advent Calendarの15日目です。
告知サイトはこちら:
http://atnd.org/events/22819前回、エントリーが長く(絵が大きいだけともいう)なってしまったので
今回はリストア編をいきます。
※ちなみにTFSのためのSQL Serverの構造についてはTFS Advent Calendar Day 13の
TFSにおけるSQL Serverの扱い by kkamegawa
をご覧いただくといいと思います。
では早速。今回もTeam Foundation Server 2010 Power Toolsを利用します。
前回も紹介していたTeam Foundation管理コンソールに組み込まれたTeam Foundation Backupsから作業します。
右側の方のメニューに「Restore Database」というものがあるのでここからデータベースの復元作業にとりかかりましょう。

こちらもやはり基本的にはウィザードなので、そんなにそんなに悩むことはないとは思いますが、
いくつかポイントを補足しながら実行していきたいと思います。
ウィザードの最初のステップではTFS Backup Planによって作成されたバックアップデータの保存場所を指定します。
やっぱりUNCパスで指定する必要があるので気を付けてください。
パスを指定できたら必ず隣にある「List Backups」のリンクをクリックします。
リンクをクリックした段階で初めて、対象フォルダ内に必要なデータがあるかの検索が行われ、
データが見つかると下の図にあるようにバックアップデータの一覧が表示されます(図では1つしかありませんが)
リスト内に表示された一覧から復元対象データを選択するところまでがこの画面での作業となります。

次の画面の作業に移りましょう。
レポーティングサービスのデータを格納するデータベースインスタンスと
暗号化キーの復元に利用するパスワードを入力します。
復元先データベースはバックアップ時に取得したサーバー名がデフォルト値で入っているので必要に応じて書き換えます。

次の画面では各データベースの復元先サーバー(SQL Serverのインスタンス)を設定します。
とはいってもやはりバックアップ取得時に設定されたものがデフォルト値で出てきていますので通常はそのままで大丈夫でしょう。
別のサーバーに復元する場合には一個一個書き換えるようにしてください。

設定が一通り設定するとVerifyになります。
が、バックアップしていきなりリストアしようとすると、当然なんですが以下の画面のようなエラーが表示されます。

通常、バックアップを使ってリストアする場合はディスクが逝ったなどとにかくデータがなくなったパターンがほとんどだと思いますので
テストだから~ということでバックアップしていきなりリストアするとこのように
すでに同じ名前のデータベースが存在しているよということでエラーとなってしまいます。
もしほんとうにテストを行うのであれば、
壊してもいい壊れてもいいTFSを用意したうえで
一度、すべてのデータベースを削除しておく必要があります。
復元先となるSQL Serverに同名のデータベースが存在していない状態でVerifyを行い、
(場合により警告くらいはちょっとくらい無視して)復元を実行すると下記のように無事(?)に復元が完了します。

# ちなみにテストのために多少データが入ってるTFSを利用しましたが、
# データベースにはきっちり一度いなくなって頂きました。
# もちろん復元後にはすべてのサービスに問題なく接続できるようになっています。
これで無事にバックアップデータから復元を行うことができました。
なお、実際の運用時には復元に利用したデータは削除しないようにしておいてください。
Power Toolsのバックアップ機能を利用してプランを作成した際に、自動的に削除用のタスクも作成されています。
保存しておきたい周期に応じてデータ削除用のタスクが自動的に古いバックアップデータを削除していきますので
バックアップデータを保存してあるフォルダ内のファイルはいじらないことを強くお勧めします。
ちなみにバックアップデータを手でいじってしまうとPower Toolsのバックアップ機能が正当なファイルであると認識できなくなってしまい
復元用のデータとして利用できなくなってしまうことがあります。