kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

TFS2008からTFS 2012へのアップグレードができない(原因判明)

TFSのアップグレードシナリオはいくつか用意されています。

インプレースアップグレード

OSそのままでアップグレードするって方法ですね。サポートするSQL Serverの都合もあるので、注意してください(TFSに限らず、二つ前のSQL Serverしかサポートしないようです)。
しかし、インプレースアップグレードできる環境は結構限られます。たとえば、TFS2010はWindows Server 2003をサポートしませんし、64bitで動かしたいとなると、Windows Server 2008/R2になるでしょう。
アーキテクチャの異なる(x86からx64)アップグレードはOS自身がサポートしていないので、二回に一度くらいはデータ移行をする必要があります。

異なる筐体へのアップグレード

前にも書いたように、サポートアーキテクチャの都合上、二回に一回くらいはこのアップグレードをしなくてはなりません。SQL Serverのデータが無事ならばあとはどうにかなるので、仮想環境で評価版のOSなどを使って試すことをお勧めします。
ただ、評価版だからと言って、最高の環境に入れるとちょっと痛い目を見ます。たとえばSQL Serverはデータベースの移行に少し気を付けてください。

  • バックアップファイルの有効日。既定で設定されていなかったかもしれませんが、残してあればいいやと思っていると、有効期限切れデータでどうしようもならなくなることがあります。
  • 古いSQL Serverにはリストアできない。たとえば、SQL Server 2012でバックアップを取ってしまうと、SQL Server 2008 R2では復元できません。x64とx86アーキテクチャの違いはないので、SQL Serverのバージョンが同じであれば、どちらでも相互に行き来できます。
  • SQL Serverのエディション違い。どこかに書いていた気がするのですが、復元とバックアップは同じエディションにしておくほうがいいです。

現在のはまり

長々と書いたんですが、今この現象にはまっています…。
TFS2012へのアップグレード処理中にTF400744エラーが出る | Microsoft Connect
connectでは解決しないかもしれないので、MSDNのインシデント使ってサポートにも問い合わせています。ただ、リポジトリがほしいといわれて、お仕事のリポジトリはさすがに出せないかもしれないので、自宅で同じようなリポジトリ作れないか、今必死でやっているところ…。なんせTFS 2005から積み重ねたものなので、なかなか大変です。
サポートの方によると、前例はない、とのことでした。TFS 2008→2012はサポートされるのでしょうけれど、どうしてこうなった。USのMSDNフォーラムでもTFS 2012RCで一件報告がありましたけど、どうにもなっていないようです。
一度ドキュメント書こうと思って、TFS 2005から2008,2010までやろうとして、2008で止まっちゃったんですよね…。そしてADが吹き飛んで、その評価用環境使えなくなっちゃった。
(11/6追記)
サポートとやり取りして、やっと原因がわかりました。SQL Server 2012の未知のバグだそうです(CU4でも未対応)。アップグレードするときはDatabase TierにSQL Server 2008 R2 SP1を使ってもらえればこの現象は起きません。SQL Server側でどういう対応になるかわかりませんが、状況が変わればお知らせします。
(11/9追記)
SQL Serverではなく、TFS側のチェック処理がよろしくないんじゃないか?と考えなおしました。長くなるので、別に書いています。
TFS 2008(/w SQL Server 2005)からTFS 2012にアップグレードできない(結果) - 新日々此何有哉