How to Import another TFS 2005 or TFS 2008 server into a live TFS 2010 server

Important: Install the hotfix mentioned here before running Import:

https://blogs.msdn.com/b/mitrik/archive/2010/06/17/version-control-2010-upgrade-hotfix-published.aspx

TFS 2010 has an 'import' feature to let you upgrade the databases from TFS 2005 or TFS 2008 into your live TFS 2010 server.  This lets you consolidate your TFS servers into a single server.  Each server you import will become a new collection in TFS 2010.

There are some restrictions.  The Import feature is not fully functional, which means there are some steps you'll need to do manually.  You can get there, it's just a bit of work.  Specifically, Import does not hook up your Sharepoint sites to your projects and it does not set Reporting folder permissions.

Once you have a TFS 2010 server up and running, you can follow these steps to Import a legacy server:

1. Restore the 6 Orcas DBs (*) (you don't need TfsWarehouse)

2. Change TfsVersionControl database RecoveryModel to ‘simple’ in SQL Server Management Studio. This step is unnecessary in RTM, and will improve performance in Beta2.

3. Restore the SharePoint content database (and rename the DB to not conflict with existing content DBs)

4. Attach SharePoint content database to SharePoint

5. Import Collection. Open a cmd window as administrator. Change directory to “%programfiles%\Microsoft Team Foundation Server 2010\Tools”

6. Tfsconfig import /sqlinstance: <dataTierName> /collectionName: <new collection name>

7. Hook up SharePoint portals to TFS projects manually from Visual Studio's Team Explorer.

 

(*) Note: As part of Import, the 6 DBs will be pulled together into the TfsVersionControl database, and that database will be renamed to Tfs_<collectionName>. However, the files on disk will still say TfsVersionControl.mdf and TfsVersionControl.ldf, assuming you restored them to their normal names. This name disparity could be confusing and if you are importing multiple database sets you'll hit name collisions. You have at least three options to fix this:

1. When restoring the TfsVersionControl database, rename the files (but not the database itself) to match the collection name you’re going to use. For example if the collectionName will be RXD, name the files Tfs_RXD.mdf and Tfs_RXD.ldf. The database name must still be ‘TfsVersionControl.’ The idea is that after running Import, TFS will rename the database to Tfs_RXD and then the database and file names will match.

2. After Import succeeds, from the TFS Admin Console, stop the new collection. Then in SQL Server Management Studio take the database offline. Then rename the .mdf and .ldf files. Then put the database back online. Then restart the collection.

3. If you are OK with the database filename TfsVersionControl.mdf, you can restore subsequent databases into different folders on disk.

 

Note 2: In Beta2, Import will show you what step it is on in the console window.  Not all steps are created equal.  Import usually spends at least half its time on step 97.  So be patient.  Also, once the import starts you can kill the console window without affecting the import.