首页 > 代码库 > TFS迁移

TFS迁移

  之前从网上搜了些TFS备份、还原的资料,经实验效果不是很好,现又从网上搜了些资料,同事找的资料,我现在就借花献佛整理出来给大家一起分享一下。

  简单地说下,这篇文章的基本思想是一个集合一个集合的迁移。

  首先,在新环境下安装SQL Server 2008(全部功能),然后配置报表服务器:服务账户为管理员用户,管理员密码,应用;web服务URL默认,应用;数据库更改,创建新的报表服务器数据库(如果源服务器也配置过报表服务器,那么就把原服务器上的ReportServer,ReportServerTempDB这两个库分离出来,附加到新服务器上,然后选择现有报表服务器数据库),一路默认下一步,最后全部完成的时候,报表服务器配置完毕。

      第二步,配置新服务器的TFS2010(高级配置向导),详细配置方法百度有的是。这里要注意一个问题:如果还想使用原来的项目集合,那么在“项目集合”这一步的时候,可以勾掉“创建新的团队项目集合”这一选项。其他的参照网上的说明。代理配置和生成配置都要配。如果为了方便,所有的账户均可以使用服务器管理员帐号和密码。

      第三歩,打开原服务器上的Team Foundation 管理控制台,选择应用层的“团队项目集合”,然后在常规里边分离集合,忽略所有警告。分离完毕后去SQL Server Management Studio里边分离团队项目集合对应的数据库。这个数据库一般是“Tfs_团队项目集合名称”这样的命名规范,只分离这个库就可以了。

    第四歩,复制这个数据库到新服务器上,附加。如果新旧服务器的名字不一样,则需要执行第五步。否则,直接进行第六步

  第五步,以下步骤都是在新服务器上进行操作。

       打开库:ReportServer

       更新表:ExecutionLogStorage

       更新字段:InstanceName,把所有数据都改成:新服务器数据库实例名\SQL服务名,可以对比以前的数据,修改实例名就可以。

       更新字段:UserName,把所有数据都改成:新服务器机器名\账户名

 

       更新表:Keys  
   更新字段:MachineName,改为新服务器机器名

 

       更新表:Users

       更新字段:UserName,怎么更新你懂的。。。

 

       打开你项目集合的那个库:这个数据库一般是“Tfs_团队项目集合名称”这样的命名规范

       打开表:tbl_BuildServiceHost   修改字段:BaseUrl   最前边的那段改成新服务器的机器名。

 

       打开表:tbl_Command 修改字段:IdentityName 前边那段改成新服务器的机器名

   可以使用以下sql实现:

  update Tfs_ITSupportCollection.dbo.tbl_Command 
  set IdentityName=replace(convert(varchar(8000),IdentityName),‘oldName‘,‘newName‘)

  where IdentityName like ‘oldName\%‘;

       打开表:tbl_WorkspaceMapping 修改字段:WorkspaceName,Computer   找到对应原服务器的工作区名和计算机名(如果有的话),改为新服务器的机器名

 

  第六步,dos下进入C:\Program Files\Microsoft Team Foundation Server 2010\Tools这个目录,然后分别执行以下命令(来自网络):

  tfsservicecontrol quiesce    (这个是停止TFS服务)

   TFSConfig PrepSQL /SQLInstance:你的SQL Server实例名     (这一步是准备实例)

  TFSConfig Accounts /ResetOwner /SQLInstance:你的SQL Server实例名 /DatabaseName:TFS_Configuration    (这一步是配置数据库所有者)

   TfsConfig Accounts /add /AccountType:ApplicationTier /account:账户名称,我用的管理员administrator /SQLInstance:你的SQL Server实例名 /DatabaseName:TFS_Configuration                (这一步是向数据库中添加账户)

   TfsConfig registerDB /SQLInstance:你的SQL Server实例名  /DatabaseName:TFS_Configuration   (这一步是验证并更新数据库,执行完毕后,自动开启TFS服务)

(保险起见执行一下tfsservicecontrol unquiesce命令,启动TFS服务)

 

  第七步,打开新服务器上的Team Foundation 管理控制台,选择应用层的“团队项目集合”,然后附加集合,在弹出窗口中点击“列出可用数据库”,就会发现下边列表中已经有了刚刚转移过来的集合数据库,一路默认下一步,验证完毕后执行就可以了,可能会出现几个警告,大致就是报表服务器的敬告,可以暂时忽略。

 

      第八歩,打开新服务器上的Team Foundation 管理控制台,选择应用层,右侧会有一些信息,点击“应用层摘要”的“重新应用账户”,走条,完毕,结束。“管理控制台用户”右侧的“重新应用”,也可以点一下。之后就是配置“组成员资格”了。在配置组成员资格之前,要保证新服务器上的tfs相关的用户和原服务器一致(如果没有,可以在计算机管理中添加)。

  

以下是原作者遇到过的问题:

 

1.做到第七歩的时候,点击列出可用服务器列表提示没有可选的数据库。这是因为我在原服务器上没有通过Team Foundation 管理控制台正确分离项目集合,而是直接从数据库中分离项目集合数据库。这样做可能出现以上情况。

 

2.访问TFS web的时候出现503,网上找的原因都是修改了tfs账户的密码导致的。而我的原因是对应的应用程序池停止了,重新运行就好了。

 

3.网上说可以通过Team Foundation 管理控制台的应用层专用设置来导入从前的团队项目,我试了,不好使,可能是因为机器名不同,按照上边改数据的步骤应该可以。

 

4.端口冲突的问题,一般sql报表服务器就用默认的80,tfs就用默认的8080,代理服务器8081,一般没什么问题。