2008.08.23
Team Foundation Server2008のバックアップからのリストアの方法
本日のキーワードは、Team System, Team Foundation, TFS,2008,バックアップ,リストア,移行,別サーバから新サーバへのデータ移行とか、その辺りか。
仕事で、TFS2005から、TFS2008への新ファームでの移行をすることになって、手順的にはどうしたのかというと、TFS2005から、新TFS2005のファームに移行して、そこで2008にアップグレード、その後、新ファームへの移行という手順を行い、予定では6時間で終わるはずだったのが、12時間以上かかったので、その手順とMSに対しての文句が、今日の趣旨です。
というか、TFS2008のバックアップリストアの手順なんですけど、これ、日本語のサイトにあるドキュメントの手順では、失敗します。
具体的には、このURIです。
http://msdn.microsoft.com/ja-jp/library/ms404869.aspx
方法 : あるハードウェア構成から別のハードウェア構成へ Team Foundation Server を移動する
この手順は、VS2008と書いてあるのですが、TFS2008の手順ではないです。たぶん、TFS2005の手順で、内容がTFS2008っぽくなっているだけです。(日本語サイトが古いのかも)
なお、この2005手順は、TFS2005の復元に使えます。つまり、2005と2008では、手順が違うのです。
http://msdn.microsoft.com/ja-jp/library/ms404869(VS.80).aspx
方法 : あるハードウェア構成から別のハードウェア構成へ Team Foundation Server を移動する
まぁ、後半の6時間くらいは、このトラップにひっかかっていたというのは、内緒です。
正しいドキュメントの位置ですが、日本語はダメです。英語です。
以下ににあります。
http://msdn.microsoft.com/en-us/library/ms404869.aspx
How to: Move Your Team Foundation Server from One Hardware Configuration to Another
なお、この手順でも、復元は出来ないか知れません。
というか、僕は出来ませんでした。
日本語ドキュメントを含めて、この3つのドキュメントの全てに目を通してから、復旧に臨みましょう。っていうか、復旧しなきゃいけない状態の時に、そんな余裕があるかボケェ!?
ということで、これは会社のMVPの人に言っておくので、将来的には、ドキュメントが治るかも知れませんので、このアーカイブの役目は、それまでかも知れません。
とりあえず、手順をさらっと見ていきますが、基本的には英語版の手順に従ってください。
英語が読めない人は、日本語のヘルプを参考にしてください。やることは基本は一緒です。(やらないことと、やり方が違うことはありますが)
まず、Reporting Serviceのキーと、SQL Serverのバックアップの方法は一緒です。
この時、TFS2005だと、SharePoint(以下、WSS)のバージョンが2.0なので、コンテンツデータベース名がSTS_CONTENT_TFSですが、WSS3.0でセットアップしたTFS2008には、ちゃんとバージョンアップしておけば、WSS_Contentで復元できますので、安心してください。ただ、TFS2008のディスクに入っているWSS3.0は、SP1が当たっていないので、TFS2005から2008にアップデートして移行する時は、ちゃんとWSSのアップデートバージョンをあわせてください。(またはTFS2008側にSPを当てるかです)
データベースの復元の手順ですが、英語ドキュメントでは、サービスで、SharePoint Timer Service or Windows SharePoint Services Timer、Visual Studio Team Foundation Server Task Scheduler Serviceを止めろと書いてあります。日本語でもそうです。ただ、英語では、レポートサービスを止めろと書いてあるのが、管理ツールのサービスからというように読めますが、レポートサーバの構成から止めてもいいと思います。っていうか、その方が楽です。
アプリケーションプールは、レポートサーバのものとTFSのものを止めます。
ついでに、英語版ドキュメントでは、WSSのサイト(既定のWebサイト)を止めろと書いてあります。(レポートのサイトが違うならそれも止めろと書いてあります)
このあたりは、サーバの構成によりますが、止めても止めなくて、たぶん平気です。僕は止めませんでした。(WSSの既定のWebサイトはすぐにスタートするので、止めない方が楽です)
サービスを停止したら、データの復元です。
この手順は同じです。STS_Content_TFSは、バージョンアップしてあれば、WSS_Contentに復元できます。
あ、そうだ。
TFS2008では、WSS_Configと、WSS_Adminがありますが、これは復元すると大変なことになるので、ふれないでください。念のため、新サーバは、バックアップをとっておくとよいいでしょう。
データの復元は、それほど困らないかと思います。SQL Serverの復元は簡単だなぁ。
復元が終わったあと、日本語の手順に行くと、失敗します。
英語の手順で続けてください。
次にすべきことは、Restore Web Sites for Team Projects(チーム プロジェクト Web サイトの復元)です。
なお、日本語手順でこのセクションに飛んで、その通りに処理しても、WSS3.0はエラーを返すので、英語の手順で復元してください。
具体的には以下の流れです。
- 管理ツールから、SharePoint3.0管理サイトを開け
- コンテンツ データベースで、WSS_Contentを開け
- WSS_Contentを削除しる
- コマンドプロンプトで、%programfiles%\Common Files\microsoft shared\web server extensions\12\BIN にいけ
- stsadm.exeを、stsadm -o addcontentdb -url http://SharePointServerName -databaseserver newDataTierServerName -databasename WSS_Content と、実行しろ。ただし、WSS_Contentはお前の環境では違うかもしんないから、直せよ
- もしバックアップしてあるWSSのカスタムテンプレートとかがあるなら、ここで復元できるんだからね!
- SharePoint Timer Service を開始してもよろしくてよ
で、チームWebサイトが復元できます。
なお、英語版のドキュメントはリンクになっているので、念のためリンクを張っておきます。
http://msdn.microsoft.com/en-us/library/cc668750.aspx
How to: Redirect SharePoint Products and Technologies to Use a New Content Database
次の手順は、Restore and Test SQL Server Reporting Services and Default Reports(SQL Report Server、Reporting Services、および既定のレポートの復元およびテスト)です。
この手順は、ほとんど日本語と英語で同じですが、この日誌の手順では、英語手順に従います。つか、日本語手順では、前提としてここまででRenameDTとかしてあるので、動いちゃうんですよね。あと、地味に英語手順でも足りないことがあるので、危険です。
流れ的には、以下。
- レポートサーバのアプリケーションプールを開始してください
- レポートサービスの構成を開きます
- 日本語では、ここでサービスを開始してくださいと書いてありますが、開始しないで大丈夫です。というか、開始しない方がいいんじゃないかと
- データベース接続ペインで、データ層につなげて、適用をぶちっとやります。っていうか、日本語も英語も書いてある文章が長いのは、操作毎に書くから
- デュアルサーバモードの人は、なんか処理が必要なので、それもやってください。僕、デュアルサーバモードで動かしたことない。(そもそも、今までWorkGroupだったのを、人数が増えたので、ADにした)
- 英語手順では、エンタープライズとスタンダードの分岐がなく、スタンダートの手順ぽいですが、スタンダートでつかっていたので、エンタープライズ版の時はどうなるかは無視して、英語版手順のまま進みます
- コマンドプロンプトで、%ProgramFiles%\Microsoft SQL Server\90\Tools\binn に行って、RSKeyMgmt をつかって、古いキーを削除します。っていうか、ドキュメントの説明はこういう風に細かく書いてくれるのがうれしいけど、僕の説明は細かくなくていいですか?めどいので
- ちなみに、元々のIDを消すとどうなるのか、僕は知りません
- 英語版ドキュメントでは、ここでレポートサービスを開始しやがれと言っております
- レポートサーバの暗号化キーを復活させます。ちなみに僕はここで、別のサーバの暗号化キーを復活させようとして、パスワード違いではじかれまくりました。10分くらい
- 日本語ドキュメントはまだまだ続きますが、英語ドキュメントはここで終わりなので、レポートサーバの構成はここで一段落です
- ちなみに、まだレポートは出ません。ももももももちつけ
次の手順は、Rename the Data-Tier Server and Activate the Application-Tier Server(Team Foundation データ層サーバーの名前の変更と Team Foundation アプリケーション層サーバーのアクティブ化)です。
日本語ドキュメントでは一番にやることになっているのですが、ここでやらないと、databaseに繋がりません系のエラーが出て、死にたくなります。
まぁ、ぶっちゃけ、TfsAdminUtil ConfigureConnections /viewを先に解決しておけばいい話なんだと思いますけど、英語ドキュメントではここでやれと書いてあるので、ここでやります。
手順は以下です。
- 日誌の手順通りなら、TFSのアプリケーションプールが起動していないはずなので、起動します
- コマンドプロンプトで%ProgramFiles%\Microsoft Visual Studio 2008 Team Foundation Server\Toolsに行き、TfsAdminUtil ConfigureConnections /view を撃ちます。どきゅーん
- なんか、変えなきゃいけない系のものが目に飛び込んで来ますが、今回変えるのは、この中の ReportsUri, ReportServerUri の2つです。他は別のステップで自然に変わります。最終的には綺麗になるです
- この値を変える魔法の呪文は、TfsAdminUtil ConfigureConnections /ReportsUri:NewReports /ReportServerUri:NewReportServer です。NewReports、NewReportServer に、それっぽいパスをいれてください。それっぽいパスというのは、普通に考えたら、コンピューター名が違うだけです。ちなみにこれ、DNSとかで与えられたエイリアスのパスにしたら、どうなるんだべか
- もっかい、/view して、ちゃんと変わったか確認するのがよい子です
- 日本語ドキュメントにあるように、RenameDTのための準備をします。具体的には、サービスのconfigで、Connection String の、Data Sourceのサーバ名を古いものに。つか、これ、日本語ドキュメントでは、Sourceと書いてあって、Data Sourceの部分が、機械翻訳で落ちたのかと思ったら、change the value of the Source parameter なのね
- TfsAdminUtil RenameDT NewTeamFoundationDataTierServerName します。やったね!やっとできるね!
- TFSのアプリケーションプールを止めます。レポートサーバのも止めます。ついでに、レポートサービスも止めます
- TfsAdminUtil ActivateAT NewTeamFoundationApplicationTierServerName します。ついにアクティブ化だよ!
まぁ、これで二段落。
でも、まだレポートは出ません。
レポートが出るようにするために、Rebuild the Team System Cubeという手順を行います。日本語ドキュメントにはない手順ですが、やることは、日本語ドキュメントのSQL Report Server、Reporting Services、および既定のレポートの復元およびテスト の14以降の手順に似ています。
ただ、似ているだけで、この手順じゃないです。
ドキュメントは変わって、以下のドキュメントです。僕はこれを見逃していて、悩みました。
http://msdn.microsoft.com/en-us/library/cc668753.aspx
How to: Rebuild the Team System Cube
このドキュメントを見る前に、Understanding the Data Warehouse Architecture.とかのリンクがありますが、基本的にこのドキュメントが必要な時に理解する時間はないのだろうと思うので、理解せずに進みます。
要するに、やりたいことはTFSのレポートがうごきゃいいんだよ、動きゃ。
で、なんかいろいろ前提が書いてありますが、TFSが前提をクリアしていないといけないし、そもそもTFSのインストールアカウントでここまでの作業をしているはずなので、無視します。
さらに、英語ドキュメントの手順と日本語ドキュメントの手順では違いがあり、僕が試したところ、どちらの手順でもダメでした。
なので、2つのドキュメントのいいとこ取りでやります。
MSが保証する手順ではないので、ダメでも泣かないでね。僕はこの手順でやったという、ただそれだけのことです。
- いきなりですが、日誌手順では、日本語ドキュメントにある、TfsReportDSとTfsPlapReportsDSの接続文字列を変更します
- これをするには、レポートサービスと、レポートのアプリケーションプールが動いていないといけないので、動かします
- 日本語手順に従い、2つの接続文字列とサービスアカウントを変更します
- レポートのサービスと、プールを止めます。変わりに、TFSのアプリケーションプールを開始します
- コマンドプロンプトを開き、%Program Files%\Microsoft Visual Studio 2008 Team Foundation Server\Tools にいって、SetupWarehouse.exe -o -s DataTierServerName -d TFSWarehouse -c warehouseschema.xml -ra TFSReportServiceAccount -a TFSServiceAccount -mturl http://ApplicationTierServerName:Port -l LogFileName を実行します。ここで、-sスイッチはデータサーバ名、-dスイッチは、TFSのWarehouse、デフォルトでは、TfsWarehouse。-raスイッチは、レポートサービスアカウント、-aスイッチはTFSのサービスアカウント。-mturlはTFSのサーバ名の、デフォルトなら8080ポートです。-lスイッチはオプションで、ログファイルが必要ならつけます。なくていいです
- コマンドが正常に終了したら、英語ドキュメントにあるように、http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx にアクセスします。GetWarehouseStatus を実行すると、なんか帰ってきます。(たぶん、Idle。それ以外が帰ってくるなら、まだ終わってない)
- 次に、日本語ドキュメントにあるように、Warehouseのアクセス権を指定して、Analysisサービスを再構成します
- 具体的には、SQL Server ManagementStudioから、TfsWarehouseに行き、dbo._WarehouseConfigのテーブルに対して、TFSのレポートアカウントを、権限で追加します。RenameDTしているので、名前が変わっているはずです
- Analisysサービスに接続して、TFSWarehouseを右クリックして、処理をします。
- 全部終わったら、レポーティングサービスと、レポーティングのアプリケーションプールを開始します
- レポートサーバにアクセスして(http://localhost/reports)適当なレポートを表示してみます。表示出来なければ、どこかの手順がおかしいです。(レポートサービスの起動のタイミングが、Analisysの前だか後だか覚えていないので、その辺りかも知れません)
さて、ここまで来れば、あと一息です。Delete the Version Control Cache(バージョン管理のキャッシュの削除)をします。
日本語ドキュメントでは、Dataフォルダ毎行ってしまいそうですが、Dataフォルダは消さずに、中身を消してください。Delete the contents of the Data subdirectory, but do not delete the Data subdirectory itself.です。
最後に、Move User and Service Accounts(ユーザー アカウントとサービス アカウントの移動)です。これは、日本語も英語も同じです。
ただ、注意しなければいけないのは、TFSはワークグループモードで動かすことを、あんまり前提として考えていません。
なので、コンピューターアカウントはまず、うまく移行できません。ワークグループモードのアカウントは移行できない(特に、WorkからADへの移行のとき)ことが多々あるので、そのようなアカウントは、「あきらめた方が無難」です。
ちくちくと移行して行きますが、個人的な意見としては、どうせ使うならTFSは早い段階からAD構成にした方がいいです。そうすれば、ドメインの信頼だけで事足りてしまうので。
サービスアカウントや、セットアップアカウントも、ADに任せた方が無難ですね。
Restart Services, Refresh the Data Cache on Client Computers(サービスを再起動し、動作を確認するには)を行います。
日誌手順だと、既にレポートもTFSもあがっているはずですので、WSSのサービスと、TFSのサービスを開始します。
英語ドキュメントでは2つに分かれていますが、日本語ドキュメントでは1つです。やってることはだいたい同じなので、その通りに行ってあげてください。
なお、ドメインの名前等、ワークスペースは基本的に壊れるものだと認識した方がいいです。僕は結局ほとんど壊れたので、ワークスペースは消して、作り直しをすることにしました。結構面倒ですが、今後はADで管理することにしたので、今の面倒くさいは、あきらめることにします。
以上で、TFS2008のリストアは完了です。
まぁ、ドキュメントにもあるように、WSSとレポートサービスのアカウントの移行方法は存在しないので、ここはあとは手動でなんとかしてください。
ってか、これがスゲー時間かかるんですけどー。
TFSはMS製品の中でも、開発者向けの上級製品なので、ディスクいれてポンでは使えないのが面倒ですが(アップグレードだけなら、ディスクいれてぽんですが、WSS3.0にするのはポンじゃないしね)、開発チームと呼べるようなメンバーを抱えているチームの管理者は、これくらいは出来るだろうと思っているのかも知れません。
まぁ、日本語化チームはたぶん、そのような人は、日本語ドキュメントがおかしいと思ったら、英語ドキュメントを見るだろうと思っていて、英語のドキュメントチームは間違っててもなんとかするだろうと思っているのかも知れませんが。
SP1が出る製品のドキュメントくらいは、もうちょっとまとめてほしいなぁ。
ちなみに、夜中作業していたので、インシデント使えませんでした。自力解決。