移动项目集合

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019

可以将项目集合从一个部署Azure DevOps Server移到另一个部署。 例如:

  • 组织中有多个Azure DevOps Server部署,并且希望将集合移到另一个部署,以便更好地满足业务需求。
  • 你想要将集合移动到具有其自己的Azure DevOps Server部署的远程办公室。
  • 你想要通过添加另一个 SQL Server 实例来扩展Azure DevOps Server的部署,并希望在实例之间分发现有集合。
  • 需要从运行早期版本的Azure DevOps Server部署中分离单个项目集合,然后将其移动到运行当前版本的 Azure DevOps Server 的服务器,从而以增量方式升级部署。 (这种情况的一个常见原因是,某些团队可能需要迁移到较新版本的 Azure DevOps Server,而其他团队出于工具或项目的原因而必须保留较旧版本。) 在这种情况下,还必须使用“配置功能”向导升级集合中的每个项目。 有关详细信息,请参阅Azure DevOps Server升级后配置功能。 Azure DevOps Server 2019 已弃用“配置功能”向导。 只能在 TFS 2018 及更早版本上运行该向导。 Azure DevOps Services上定义的项目随每次服务升级自动更新。

移动集合的步骤将取决于过去承载该集合的部署和要移至的目标部署的特定配置。 例如,如果将集合移至一个新域中,你将需要将该域中的用户添加到集合级别和项目级别的相应组中。

下面介绍如何移动整个项目集合。 若要移动集合的一部分,请参阅 拆分项目集合

先决条件

在开始移动前,确保你在服务器上、要移出的两个部署所使用的软件中以及你正在移至的软件中是管理员。 如果你不是管理员, 请添加为管理员

1.分离集合

在移动集合之前,请先将其从运行集合的Azure DevOps Server部署中分离出来。 请务必不要跳过此步骤。 分离集合时,将停止所有作业和服务,然后停止收集数据库。 此外,分离过程还会从配置数据库复制特定于集合的数据,并将其保存为项目集合数据库的一部分。 此配置数据允许将收集数据库附加到Azure DevOps Server的不同部署。 如果该数据不存在,则不能将集合附加到Azure DevOps Server的任何部署,除非它源自该集合。

注意

分离集合将阻止用户访问该集合中的任何项目。

  1. 在承载要移动的集合的服务器上打开 Azure DevOps 管理控制台,并在 “项目集合”中突出显示该集合。

  2. 在“ 常规 ”选项卡上,选择“ 分离集合”。

    分离项目集合

    此时会打开 “分离项目集合向导 ”。

  3. (可选) 在“ 为项目集合提供服务消息 ”页上的“ 服务消息”中,为可能尝试连接到此集合中的项目的用户提供一条消息。

  4. 选择“下一页”。

  5. 将用于分离项目集合的“审阅设置” 页上,查看详细信息。

  6. 若要更改任何设置,请选择“ 上一个”。 如果它们看起来正确,请选择“ 验证”。

  7. 成功完成所有就绪情况检查后,选择“ 分离”。

  8. “监视项目集合分离进度 ”页上,当所有进程完成时,选择“ 下一步”。

    向导将显示你的进程

  9. (可选) 在“ 查看此项目集合的补充信息 ”页上,选择或记下日志文件的位置。

  10. 选择“关闭”。

    项目集合不再显示在管理控制台的集合列表中。

    TFS 管理控制台没有显示已分离

2.备份收集数据库

分离集合后,备份其数据库以将其移动到其他服务器。 若要执行此任务,请使用SQL Server提供的工具。

“连接”窗格的屏幕截图,其中选择了以下选项:FABRIKAM2014 > Tfs_TestProjects > 任务 > 备份。

重要

你只可以将数据库还原到相同或更新版本的 SQL Server。 无法将SQL Server数据库还原到产品的
早期版本。如果原始部署使用了 enterprise 或 Datacenter 版本的 SQL Server,并且想要将数据库还原到运行 Standard 版本的服务器,则必须使用在禁用SQL Server压缩的情况下创建的备份集。 除非禁用数据压缩,否则无法将 Enterprise 或 Datacenter 版数据库还原到运行 Standard 版本的服务器。 若要关闭压缩,请按照在 Azure DevOps 数据库中禁用SQL Server数据压缩中的步骤操作。

3.移动收集数据库

作为移动集合的一部分,必须还原、复制或以其他方式将集合数据库移动到SQL Server实例,该实例配置为支持部署要向其移动集合的Azure DevOps Server。 可以选择想要移动数据库的方法。

复制数据库向导的欢迎页的屏幕截图。

有关将数据库移至另一个 SQL Server 的实例的详细信息,请参阅:

4.附加集合

还原集合数据库后,可以将集合附加到Azure DevOps Server的首选部署。 如果要移动到的部署使用报告,则会为在此过程中附加的集合生成一个报告文件夹和默认报表。

  1. 在托管要移动集合的部署的应用程序层的服务器上打开 Azure DevOps 管理控制台。

  2. 选择“ 项目集合”,然后选择“ 附加集合”。

    Azure DevOps Server管理控制台、团队项目集合

    此时会打开 “附加项目集合向导 ”。

  3. “选择要附加的项目集合数据库”页上的“SQL Server实例”中,提供服务器的名称以及承载集合数据库的实例(如果尚未列出)。

    确保 SQL Server 实例正确

  4. “数据库” 列表中,选择要附加的集合数据库,然后选择“ 下一步”。

  5. “输入项目集合信息 ”页上,在“ 名称” 中提供集合的名称(如果尚不存在)。

  6. (可选) 在 “说明”中,提供集合的说明。

  7. 选择“下一页”。

  8. 将用于附加项目集合的“审阅设置” 页上,查看信息。

  9. 若要更改任何设置,请选择“ 上一个”。 如果所有设置都正确,请选择“ 验证”。

  10. 成功完成所有就绪情况检查后,选择“ 附加”。

  11. “监视项目集合附加进度 ”页上,当所有进程都已完成时,选择“ 下一步”。

  12. (可选) 在 “查看此项目集合的补充信息 ”页上,选择或记下日志文件的位置。

  13. 选择“关闭”。

    项目集合显示在管理控制台的集合列表中。

    如果配置未完成,则停止收集

5.配置移动的项目集合

如果在同一域中移动了集合,并且打算使用以前支持集合的同一 Web 应用程序,并且希望允许该集合的管理员访问此Azure DevOps Server部署,则可以跳过此过程。

移动集合后,使用适当的设置更新该集合的 Web 应用程序和权限组。

配置移动的集合

  • 打开项目集合的每个选项卡,并根据需要修改设置以反映服务和位置,以匹配当前Azure DevOps Server上资源的位置。 对于报告资源,这一点尤其重要。 如果看到错误,请确保帐户具有项目集合管理员所需的权限,并且已根据需要添加任何其他项目集合管理员。

    有关此任务的信息,请参阅 修改项目集合设置项目集合的管理员权限

6. 配置项目

如果将集合移动到同一域中,并且希望允许该集合中的项目用户访问此部署Azure DevOps Server,则可以跳过此过程。

在为移动后的集合配置管理员之后,你或管理员必须向该集合中的项目添加用户和组。 根据部署,可能还需要在 Reporting Services 中为这些用户配置权限。

将用户添加到项目

将资源添加到移动的项目

问题解答

问:我的Azure DevOps Server部署使用报告。 如何在移动集合时移动报表?

答: 首先,需要保存或导出要在原始部署中支持集合的报表服务器中移动的任何报表。 然后你将需要将每个报表手动上载到报表服务器,此服务器将支持移动后的集合,这可能是一个很长的过程。 请考虑你是否需要上载所有报表,或者报表子集能否满足你的业务需求。 你不必上载所有报表或任何报表,但是,在移动过程完成之后,只能使用已上载的报表。

移动集合后,还需要在原始部署上重新生成仓库和分析服务多维数据集,因此原始部署不会继续尝试为不再位于的集合生成报表。

移动报表

  1. 导出或保存要从报表服务器移出的报表,此服务器在其原始部署中支持集合。 有关详细信息,请参阅 导出报表保存报表

  2. 在报表管理器中,将每个要移动的报表上载到报表服务器上的相应文件夹,此服务器在其新环境中支持集合。

    有关详细信息,请参阅 将文件上传到文件夹

  3. 在报表管理器中,编辑每个报表,以便将数据源更改为新的报表服务器。

重新生成数据仓库和分析服务

  1. 打开 Azure DevOps 的管理控制台。

  2. 在导航栏中,选择“ 报告”。

  3. “报表”中,选择“ 开始重新生成”。

  4. “重新生成仓库和 Analysis Services 数据库 ”对话框中,选择“ 确定”。

    注意

    在“启动重新生成”操作完成之后,重新生成仓库和重新填充数据也将随之完成。 根据部署的大小和数据量,整个过程可能需要几个小时才能完成。

问:如何实现移动包含部署池和/或部署组的团队项目集合?

答: 将集合移动到另一个部署时,对于源中的每个部署池在分离集合中具有部署组,系统会自动在目标实例中预配新的部署池。 对于 Azure DevOps Server 2019 或更高版本,自动预配的部署池的名称与源实例中的名称相同。 在以前的版本中,部署池名称的格式 <project name-deployment-group name>为 。 如果发生冲突,则会将随机 GUID 追加到部署池名称中。

移动完成后:

  • 可能会创建多个部署池。 可以使用 TfsConfig 命令合并重复池。 例如: TfsConfig.exe deploymentpool /migrateDeploymentGroups /fromPool:<Source Pool Name> /toPool:<Target Pool Name>
  • 需要使用新的部署池重新配置代理。 下面是一个示例 部署代理重新配置脚本 供参考。

在移动集合之前删除实验室管理资源

  • 有关如何从指定项目集合中删除所有组主机、库共享和环境的信息,请参阅带有 /External 选项的 TFSConfig Lab /Delete 命令

移动集合后配置实验室管理资源

  1. 为 Azure DevOps 配置应用层。

    有关详细信息,请参阅 为 SCVMM 环境配置实验室管理

  2. 在新 SCVMM 中重新创建黄金主虚拟机和模板,并将虚拟机和模板导入项目集合。

    有关详细信息,请参阅 创建和存储可供实验室管理的虚拟机和模板

  3. 为每个项目重新创建环境。

    有关详细信息,请参阅 使用存储的虚拟机和模板创建 SCVMM 环境

问:如何实现限制对项目中选定函数的访问?

答: 有权访问集合中的一个项目的用户可以查看该集合中的其他项目,即使他们无权修改工作项或在该项目中执行其他操作。 你可以通过专门创建组和配置对这些组的限制,授予或限制对用于创建或修改选定项目 的特定特性和功能的访问权限 ,并限制它们查看项目。