将 Team Foundation Server 从一个环境移至另一个环境

最常见的基于环境的移动方案将更改 TFS 部署的域,无论是域名更改还是从工作组转为域。

重要

在某些情况下,您可能需要更改 TFS 部署及其硬件的域。更改硬件是基于还原的移动,请勿合并两个移动类型。首先完成硬件移动,然后再更改环境。

此外,更改 TFS 中作为环境移动一部分的标识是最常导致冲突或问题的一个方面。Identities 命令是一个功能强大的工具,但它具有某些限制。作为计划移动的一部分,请阅读该工具的相关限制。若要帮助确保移动成功,请确保您了解下列要求:

  • 一旦 TFS 中存在一个用户帐户后,便不能删除此帐户或将其他帐户映射到此帐户。例如,如果您要将 DomainA/UserA 移至 DomainB/UserB,当 TFS 中尚不存在 DomainB/UserB 时,Identities 命令将只对迁移用户有效。

  • 由于本地 Administrators 组的成员将自动添加到 TFS,因此请确保在更改域或环境之前,删除要从相应组中迁移的任何帐户。

有关更多背景信息,请转到此处了解标识如何在 TFS 中发生更改的详细说明,包括此工具的限制。

我们将在下列各节中演练更改 TFS 部署环境的步骤:

  1. 检查权限和帐户

  2. 停止 TFS 服务

  3. 备份数据

  4. 将 TFS 加入到新域

  5. 为新环境配置 SharePoint 产品

  6. 移动 TFS 用户和服务帐户

  7. 配置 Reporting Services 和 Analysis Services

  8. 重新启动 TFS 服务

检查权限和帐户

为了成功更改 TFS 环境,您需要是本地计算机、TFS 以及您的部署所依赖的所有软件的管理员:SQL Server、报告、SharePoint 产品(如果您的部署使用报告或 SharePoint)和您的部署兼容的任何其他软件,如 Project Server。 但本地 Administrators 组的所有成员将自动包括在 TFS 中,这可能在尝试迁移帐户时导致问题。 因此,您应使用无需作为环境移动一部分迁移的帐户。 您可能会考虑为了移动添加一个特殊的管理帐户,并使用该帐户执行迁移。

验证管理员级别的权限

  • 确保您要使用的帐户是下列组的成员:

    • 服务器:Administrators(本地管理员组或权限相同者)

    • TFS:Team Foundation Administrators 和管理控制台用户

    • SQL Server:sysadmin

    • SharePoint 产品:场管理员(如果您的 TFS 部署与 SharePoint 产品集成)

如果您不是其中一个或多个组的成员,请立刻获取权限

既然您确定要使用具有所有必需权限的帐户,那么现在可以检查帐户,看看您将迁移到的环境中是否存在任何名称或组冲突。 我们已经知道作为本地 Administrators 组的成员的帐户无法迁移,那么让我们先删除这些帐户。

删除要从本地 Administrators 组迁移的帐户

  • 打开本地 Administrators 组,然后删除要迁移到新环境的所有帐户。 对可能受影响的任何其他组重复此步骤。

现在检查当前 TFS 环境中标识的列表,看看新环境中可能存在的组或各个用户帐户是否存在任何潜在问题。

提示

请考虑为要作为环境移动一部分移动的标识创建一个表或一个迁移映射,包括可能无法自动迁移的帐户的详细信息。

检查标识

  1. 在 Team Foundation 的应用层服务器上,使用管理权限打开“命令提示符”窗口,导航到 %ProgramFiles%\Microsoft Visual Studio 12.0 Team Foundation Server\Tools,然后运行以下命令以查看当前在系统中的标识:

    TFSConfig Identities
    
  2. 标识的列表将显示。 检查这些用户和组以确保要将 TFS 移至的环境中标识不存在任何潜在的重复项或问题,并采取措施减轻任何潜在冲突。

停止 TFS 服务

停止服务可帮助确保用户不能在移动过程中或完成后更改工作项或将源代码签入原始部署中。

  1. 在 TFS 应用层计算机上,打开“命令提示符”窗口,并将目录更改为 Drive:\%programfiles%\Microsoft Team Foundation Server 12.0\Tools。

  2. 键入以下 TFSServiceControl 命令:

    TFSServiceControl quiesce

备份数据库和 SQL Server Reporting Services 加密密钥

  1. 打开 TFS 的管理控制台,并在**“计划的备份”**页上,执行完整备份。 该备份将备份您在备份计划中对备份进行的任何配置,但它将立即执行此操作,而不是根据计划的时间执行。 如果您的部署使用报告,则可将加密密钥备份为该备份集的一部分进行备份。

    你可以在作业完成时关闭窗口。

    (如果您未配置备份,则需先创建一个计划,然后才能执行完整备份。)

  2. 完成备份后,请验证该备份在存储设备或网络共享中是否可用,以及您是否可从新硬件访问此备份。

将 TFS 加入到新域

  1. 在每台服务器上,打开计算机的“属性”。

  2. 将计算机的设置更改为您要将服务器加入到的域或工作组。

    如果系统提示您提供有权将此计算机加入到域的帐户的用户名和密码,请提供相应的凭据。

  3. 重新启动计算机以使域更改生效。

    备注

    重新启动计算机后,可能会显示一条警告,指示服务或驱动程序无法启动。请继续下一个过程。

为新环境配置 SharePoint 产品

如果您要将环境更改为与以前的环境没有信任关系的环境,则 SharePoint 产品可能需要先进行配置,然后才能正常运行。 SharePoint 站点上的“人员选取器”Web 控件中提供了有关从目录服务导入的用户的信息。 站点管理员和其他用户可使用人员选取器在分配权限时选择人员和组。 如果有关用户的信息位于多个林上,或位于没有针对所有用户的信任关系的一个林上,则可能需要其他步骤来确保可通过此 Web 控件使用所有人员和组。

如果您在部署中未使用 SharePoint 产品,如果您的新环境与旧环境具有双向信任关系,或者如果在 Team Foundation 的管理控制台中未出现有关 SharePoint Web 应用程序的错误,请跳过此过程。

  1. 在属于支持您部署 Team Foundation Server 的 SharePoint 场一部分的每台服务器上,使用管理权限打开“命令提示符”窗口,将目录更改为 %programfiles%\Common Files\Microsoft Shared\Web Server Extensions\15\BIN。

  2. 键入以下命令,其中 Key 是您要在 SharePoint 产品部署中使用的加密密钥:

    stsadm.exe -o setapppassword -password Key

    备注

    此密钥是一个加密字符串,用于对用于访问林或域的帐户的密码进行加密。加密字符串必须对服务器场中的每个服务器都相同,但是应对每个服务器场使用唯一的字符串。

  3. 键入以下命令,其中 domain:DNSName 是目标林或域及其 DNS 名称,user,password 是可以访问目标林或域的帐户的用户名和密码,WebApp 是支持 Team Foundation Server 部署的 Web 应用程序的名称:

    stsadm.exe -o setproperty -pn peoplepicker-searchadforests -pv domain:DnsName**,user,**password **-url http://**WebApp

  4. 键入以下命令,其中 URL 是支持团队项目集合的网站集的 URL,Port 是分配给该网站集的端口号,UserName 是将充当该网站集所有者的帐户的用户名:

    **stsadm.exe -o siteowner -url http://URL:**Port -ownerlogin UserName

  5. 为 Team Foundation Server 部署使用的每个网站集重复上一个步骤。

移动 TFS 用户和服务帐户

如本主题开头所提到,移动帐户是您最可能遇到问题的情况,特别是您未仔细计划用户迁移时。 TFSConfig Identities 命令无法将任何帐户迁移到 TFS 中已存在的帐户。

如果两个域中的帐户名称相同,并且唯一不同的是域名,则您可使用 TFSConfig Identities 的批处理模式一次性更改所有标识。 否则,您必须逐个更改标识并指定不同的目标帐户名称,如下详述。

  1. 在 Team Foundation 的应用层服务器上,使用管理权限打开“命令提示符”窗口,导航到 %ProgramFiles%\Microsoft Visual Studio 12.0 Team Foundation Server\Tools,然后运行以下命令以将服务帐户的服务 ID (SID) 更改为新域:

    TFSConfig identities /change /fromdomain:OldComputerorDomainName /todomain:NewDomainName /account:OldTFSServiceAccount /toaccount:NewTFSServiceAccount
    

    警告

    如果服务帐户是系统帐户(如 Network Service),则您无法直接迁移服务帐户,因为新环境中存在具有相同名称的系统帐户。您将必须执行一个两阶段过程更改。请参见 Identities 命令中的示例。

  2. 若要迁移在新环境中具有相同名称的所有帐户,请键入以下命令:

    TFSConfig Identities /change /fromdomain:OldDomainName /todomain:NewDomainName
    

    这将对帐户执行批处理。

  3. 如果新域包含一个或多个名称在环境间发生更改的标识,则需要手动为这些标识中的每一个更新 SID。 例如,如果 Christie Church 的用户帐户在上一个环境中为 Fabrikam\CChurch,但在新环境中为 NewFabrikam\ChristieC,则您必须手动更新她的 SID。 对于具有此要求的每个帐户,请键入以下命令:

    TFSConfig Identities /change /fromdomain:OldDomainName /todomain:NewDomainName /account:OldAccountName /toaccount:NewAccountName
    
  4. 现在运行以下命令以更新服务帐户:

    TFSConfig Accounts /change /AccountType:ApplicationTier /account:AccountName /password:Password
    
  5. 如果您的部署使用报告,请运行以下命令以更新用于报告的数据源帐户:

    TFSConfig Accounts /change /AccountType:ReportingDataSource /account:AccountName /password:Password
    
  6. 如果您的部署使用 Team Foundation Server 代理,请运行以下命令以更新用于该代理的服务帐户:

    TFSConfig Accounts /change /AccountType:Proxy /account:AccountName /password:Password
    

    备注

    如果您要移至不受信任的域,则可能还需要手动将用户和组添加到团队、项目、集合和 Team Foundation Server 本身。有关更多信息,请参见向团队项目添加用户设置对团队项目集合的管理员权限设置 Team Foundation Server 的管理员权限

  7. 如果您的部署与 Project Server 集成,则可能需要执行其他步骤来为服务帐户配置操作所需的权限。 有关更多信息,请参见分配权限以支持 TFS-Project Server 集成配置 TFS-Project Server 集成

配置 Reporting Services 和 Analysis Services

如果您在部署中不使用报告,则可跳过此过程。

如果您在此类型的移动过程中重命名了报表服务器,则必须将 Team Foundation Server 重定向到位于其新位置的报表服务器。 您还必须重新启动仓库并手动为 Analysis Services 重新生成数据库。

  1. 打开 Team Foundation 的管理控制台,转到“报告”节点并编辑设置。

    报表仍指向旧服务器

  2. 更改全部三个选项卡上的值,以便它们包含服务器的新名称。 确保为新环境中的数据源帐户提供正确的信息。

    确保所有 3 个选项卡显示的信息都正确

  3. 选择**“启动作业”**来重启报告。

  4. 选择**“开始重新生成”**来重新生成仓库。

配置备份

如果网络共享名或存储设备随域名的更改而更改,则需要更新已计划的备份计划,以指向这些重命名的资源。

  • 在管理控件台上,转到“计划的备份”节点并重新配置计划的备份以便在新服务器上备份 TFS 数据库。 有关详细信息,请参见配置备份日程安排和计划

重新启动 TFS 服务

既然您已经为新环境中更新了 TFS 的所有信息,请重新启动服务。

  1. 在 TFS 应用层计算机上,使用管理权限打开“命令提示符”窗口,将目录更改为 Drive:\%programfiles%\Microsoft Team Foundation Server 12.0\Tools。

  2. 键入以下 TFSServiceControl 命令:

    TFSServiceControl unquiesce

问题和答案

问:我要为部署更改一台或多台物理服务器,而不是域。我是否可以执行此操作?

**答:**可以。 这称为基于硬件的移动,相关步骤可在此处找到。 您不应尝试将基于环境的移动与基于硬件的移动合并。 先完成硬件移动,然后再更改环境。

问:我拥有与 Project Server 集成的部署。是否必须执行任何额外步骤以使其能与移动的 TFS 一起使用?

答:是,您完成环境移动之后,需要使用带 /tfs/force/pwa 选项的 TFSAdmin ProjectServer /RegisterPWA 命令重新向 Project Server 注册 TFS。 您可从此处了解有关 TFS 与 Project Server 集成的详细信息。