2019年11月18日月曜日

TFS2010から2018への移設

☆TFS2010からTFS2018へのアップグレード
https://docs.microsoft.com/ja-jp/visualstudio/releasenotes/tfs2018-update3

にて、TFS2010はTFS2012.4 or TFS2013.5にアップグレードしてからでないと
TFS2018にアップグレードできない。
そのため、今回はTFS2012.4を経由したアップグレードを試みた。

現在運用中のTFS(ホストA)を止められないので(ちょっと止めるけど)、
マイグレテスト用に、ホストBを用意して最終的にホストCにマイグレする。

(ホストA)TFS2010 SP1,SQLServer 2008 R2 (現状TFSサーバー)

(ホストB)TFS2010 SP1,SQLServer 2008 R2 (アップグレード用一時サーバー)

(ホストB)TFS2012.4 SQLServer 2008 R2 SP1

(ホストC)TFS2018.3.2 SQLServer 2017 (新運用サーバー)
と順に上げる。


■TFS2010 SP1, SQLServer 2008 R2
・既存のサーバー(A)で、該当プロジェクトをデタッチ
 (デタッチしないでバックアップしたものは、新サーバーでデタッチしてからバックアップしろと怒られる)
・デタッチしたプロジェクトをSSMSでバックアップ(Tfs_[プロジェクト名])

・新サーバー(B)に、Aと同じTFSのバージョンを用意する(SPまで合わせる)
 (合わせないとバージョンが違うと怒られる)
BのSQLServerにAのバックアップファイルをSSMSで復元する

・BのTFS管理コンソールでTfs_DefaultCollectionをデタッチ
・BのSSMSでTfs_DefaultCollectionを削除

・BのTFS管理コンソールでアタッチ
・復元したDBが表示されるのでアタッチ実行

※日頃TFS PowerToolのバックアップ機能でTFSのバックアップを行っていた
 ファイルでは復元できなかった(デタッチしてないと怒られる)
 このバックアップファイル意味あんの?
 しっかり復元できるバックアップにしたい場合は
 デタッチ→バックアップとしなければいけない模様

■TFS2012 Update4(評価版)にアップグレード(SQLServer2008R2をSP1にアップグレードしておかないと後述のエラーとなる)
・BからTFS2010をアンインストール
・TFS2012 Update4をBにインストール
・TFS2012の構成画面で、アップグレードを選択
・アップグレードウィザードで該当のDBを選択し、アップグレードを実行
 <<エラーとなった>>
  →原因:SQLServer2008R2 SP1にアップグレードしないといけない
   →SQLServer2008R2をSP1にアップグレード
    https://blogs.msdn.microsoft.com/wlennon/2013/11/27/tfs-2012-update-4-fails-in-workitemtrackingtodev11m55-sql-on-sql-server-2008-r2-rtm/
  →SQLServerをアップグレード後
  →TFS管理コンソール
   →チームプロジェクトコレクション
    →該当のチームプロジェクトを選択
     →画面下の状態タブ
      →状況が失敗になっている項目を選択して、右側のジョブの再実行を実施
       「サービスコレクション 失敗」となっていたものをジョブ再実行で
       該当のチームプロジェクトがオンラインになった。

■TFS2012.4, SQLServer 2008 R2 SP1からTFS2018へアップグレード
・ホストB(TFS2012.4, SQLServer2008 R2 SP1)のファイルをデタッチし
 SSMSでバックアップする。
TFS2018がインストールされるホストCにSQLServer2017SEをインストール
・CのSQLServerにバックアップファイルから復元
・CにTFS2018.3をインストール
・CのSSMSでTfs_DefaultCollectionを削除
CのTFS管理コンソールでバックアップから復元したプロジェクトをアタッチ
 →これでアタッチでき、該当チームプロジェクトがオンラインになった。
  TFS2010→TFS2012の時のような構成画面でアップグレードが無かったので
  そのままアタッチしたらできた。