拆分项目集合

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

随着业务的变化,可能需要将单个项目集合拆分为多个项目集合。 例如:

  • 你希望集合中的项目与组织中的业务部门保持一致,并且集合中的项目现在由单独的单位拥有。

  • 从早期版本的 Azure DevOps Server 升级,只有一个集合,并且出于安全或业务一致性原因,需要将项目组织到单独的集合中。

  • 你想要将集合中某些项目的所有权更改为具有自己部署 Azure DevOps Server 的远程办公室。 此方案要求先拆分集合,然后将其中一个生成的集合移动到远程办公室部署。

    注意

    本文中的过程仅支持拆分项目集合。 若要在拆分集合后移动集合,请参阅 移动项目集合

若要拆分项目集合,请执行以下步骤:

  1. 准备拆分集合

    1. 分离集合
    2. 备份集合数据库
  2. 拆分集合

    1. 还原具有不同名称的集合数据库
    2. 附加原始集合数据库
    3. 附加重命名的集合数据库
    4. 从拆分集合中删除项目
    5. 启动集合
  3. 配置拆分集合

    1. 为拆分项目集合配置用户和组
    2. 为集合中的项目配置用户和组

开始之前

请确保你是服务器和 SQL Server 和 Azure DevOps Server 中的管理员。 如果你不是管理员, 请将其添加为一个管理员。

1-a. 分离集合

首先,从运行它的 Azure DevOps Server 部署中分离集合。 分离集合会停止所有作业和服务以及集合数据库本身。 此外,分离过程会从配置数据库复制集合特定的数据,并将其保存为项目集合数据库的一部分。

分离项目集合

  1. 在托管要拆分的集合的服务器上打开 Azure DevOps 的管理控制台。

  2. 选择 项目集合,然后在集合列表中选择要拆分的集合。

    在此示例中,管理员选择 TestProjects

    从集合列表中选择集合

    提示

    项目集合的默认名称为 DefaultCollection。 如果要拆分此数据库,请确保为第二个集合提供不同的名称,因为这是连接时的默认选择。

  3. “常规 ”选项卡上,选择“ 停止集合”。

    停止收集接口

    此时 会打开“项目集合状态原因 ”对话框。 输入的文本将显示给用户。 选择“停止,并等待集合停止。 停止后,其状态将显示为 脱机状态。

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

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

    分离集合向导

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

  6. 在将用于分离项目集合页的“审阅”设置中,查看详细信息。 若要更改任何设置,请选择“ 上一页”。 如果正确,请选择“ 验证”。

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

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

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

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

1-b. 备份集合数据库

分离集合后,必须先备份其数据库,然后才能使用不同的名称将副本还原到服务器。 该副本将成为要拆分为另一个集合的原始集合部分的数据库。 若要执行此任务,请使用 SQL Server 中提供的工具。

备份数据库

备份集合数据库

  • 有关如何手动备份和还原单个数据库的信息,请参阅 SQL Server 中的备份和还原数据库,以及 创建备份计划和计划。 请务必选择与部署匹配的 SQL Server 版本。

    重要

    如果原始部署使用了 SQL Server 的企业版或数据中心版,并且想要将要拆分的数据库还原到运行标准版的服务器,则必须使用禁用 SQL Server 压缩的备份集。 除非禁用数据压缩,否则将无法将企业版或数据中心版数据库成功还原到运行 Standard 版的服务器。 若要关闭压缩,请按照 Azure DevOps 数据库中禁用 SQL Server 数据压缩中的步骤操作。

2 a. 还原集合数据库

拆分集合时,必须将集合数据库的备份还原到配置为支持部署 Azure DevOps Server 的 SQL Server 实例。 还原数据库时,必须为其提供与原始集合数据库的名称不同的名称。

提示

以下步骤概述了如何使用 SQL Server Management Studio 在 SQL Server 2012 中还原项目集合数据库。 有关如何手动备份和还原单个数据库的详细信息,请参阅 SQL Server 中的备份和还原数据库。 请务必选择与部署匹配的 SQL Server 版本。

使用新名称还原集合数据库

  1. 打开 SQL Server Management Studio 并连接到承载要拆分的项目集合的数据库的实例。

  2. 在对象资源管理器中,展开“数据库”,打开要拆分的数据库的子菜单,然后选择“任务”,选择“还原,然后选择“数据库”。

    “还原数据库”窗口将在 “常规 ”页上打开。

    “常规”窗格中的“还原数据库”选项

  3. “源”中,确保已选择项目集合数据库。 在 “目标”中,提供数据库副本的名称。 保留Tfs_前缀,并添加非重复名称。 通常,该名称是拆分项目集合的名称。 在 “还原”计划中,确保要还原的备份集是要还原到的备份集。 若要确保这些集有效,请选择“验证备份介质”然后在“选择页面”中选择“选项”。

  4. “还原”选项中,将所有复选框留空。 确保 恢复状态 设置为 RESTORE WITH RECOVERY。 在“结尾日志备份”中,清除“正在还原状态中的“离开源数据库”复选框,然后选择“确定”。

    提示

    如果还原操作失败,并显示一条错误消息,指示数据库正在使用且无法覆盖,则可能需要手动配置所有逻辑文件名以反映数据库的新名称。 在“选择页面”中,选择“文件,选择正在还原的每个文件旁边的省略号按钮,并确保文件的名称反映数据库的新名称,而不是旧名称。 然后再次尝试还原操作。

2-b. 附加原始集合数据库

使用其他名称还原数据库后,将原始集合数据库重新附加到 Azure DevOps Server 的部署。

附加集合

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

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

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

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

  4. 在“ 数据库” 列表中,选择要附加的集合数据库。

    “数据库”列表

  5. “输入项目集合信息”页上,在“名称”中提供集合的名称(如果尚不存在)。 由于这是原始集合,因此可以选择保留与之前相同的名称。 在“说明”,可以选择提供集合的说明。

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

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

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

  9. 在“ 监视项目集合附加进度 ”页上,完成所有进程后,选择“ 下一步”。

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

  11. 项目集合显示在管理控制台中的集合列表中。 如果集合状态列为“联机”,则必须在继续之前将其停止。从列表中选择集合,然后在“常规”选项卡上,选择“停止集合”。

    停止收集图像

2-c. 附加重命名的集合数据库

附加原始集合数据库后,必须将重命名的集合附加到 Azure DevOps Server 的部署。 附加此集合后,它将保持停止状态。 在删除所有重复项目之前,将无法启动它。

附加重命名的集合数据库

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

  2. 选择“项目集合”,然后选择“附加集合以打开向导。

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

  4. 在“ 数据库” 列表中,选择重命名的集合数据库。

  5. “输入项目集合信息”页上,在“名称”中输入重命名集合的名称,该名称不同于集合的原始名称。 这应与你为重命名的数据库提供的名称匹配,而不使用Tfs_前缀。

    附加团队项目名称条目

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

  7. 在将用于附加项目集合页的“审阅”设置中,查看信息。 若要更改任何设置,请选择“ 上一页”。 如果所有设置都正确,请选择“ 验证”。

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

  9. 在“ 监视项目集合附加进度 ”页上,完成所有进程后,选择“ 下一步”。

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

  11. 集合的名称显示在管理控制台中的集合列表中,其状态应显示为 脱机

    附加团队项目名称条目

  12. 若要确保两个集合都附加了唯一 ID,请在管理控制台中转到事件日志并打开两个集合附加操作的日志文件。 CollectionProperties 的 GUID 不应匹配。

    包含 CollectionProperties 的 GUID 的日志

    在 CollectionProperties GUID 匹配的可能性不大的情况下,使用 /clone 参数运行第二个集合上的 TFSConfig Collection 命令 ,将 ID 更改为唯一 ID。

2-d. 删除拆分集合上的项目

现在,已将集合的两个副本附加到 Azure DevOps Server,必须从原始集合或重命名的集合中删除每个项目,这样两个集合中都不会保留任何项目。

重要

项目不能存在于多个集合中。 在删除拆分集合之间的所有重复项目之前,将无法启动重命名的集合。

从集合中删除项目

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

  2. 选择“项目集合,然后在集合列表中,选择停止的原始项目集合以拆分它。

  3. 在“项目”选项卡上的项目列表中,选择要从集合中删除的项目,然后选择“删除”。

    提示

    可以选择多个项目一次删除。

    用于删除项目的 TFS 管理控制台

  4. 选中“删除工作区数据”复选框,将“删除外部项目”复选框保留为清除,然后选择“删除”。

    如果未清除“删除外部项目”复选框,并且项目配置为使用实验室管理,则会从 System Center Virtual Machine Manager 中删除与该项目关联的虚拟机和模板。 它们将不再可供重命名集合中的项目使用。 (请注意,TFS 2017 及更高版本已弃用实验室管理。

  5. 完成删除不希望在原始项目集合中托管的项目后,请从集合列表中选择重命名的项目集合。 然后,在“ 项目 ”选项卡上,从新集合中删除不需要的项目。

    “项目中的项目”选项卡

  6. 重复本部分中的步骤,直到这两个集合都包含一组唯一的项目。

2 e. 启动项目集合

删除项目后,重启这两个集合。

启动项目集合

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

  2. 选择“项目集合,然后在集合列表中,选择已停止的集合以拆分它。

  3. “常规 ”选项卡上,选择“ 开始集合”。

  4. 对附加有新名称的集合重复步骤 2。

    TFS 管理控制台

3 a. 为拆分集合配置用户和组

如果两个拆分集合将保留在同一域中,并且希望允许原始集合的管理员访问这两个集合,则可以跳过此过程。

拆分集合后,必须使用将管理这些集合的用户和组更新集合的权限组。 有关详细信息,请参阅 设置项目集合的管理员权限。

3-b. 为项目配置用户和组

如果拆分集合将保留在同一域中,并且希望允许原始集合中项目的用户访问这两个集合,则可以跳过此过程。

为这两个集合配置管理员后,你或这些管理员必须为每个集合中的项目的用户和组配置访问权限。 根据部署,可能还需要在 Reporting Services 中为这些用户配置权限。 有关详细信息,请参阅 将用户添加到项目或团队

问题解答

问:我的部署使用报告。 拆分集合时是否需要执行任何其他步骤?

答: 是的,在删除完项目后,需要拆分报表,以便两个集合都有一组唯一的项目。 还需要重新生成数据仓库。

删除项目后,将拆分集合使用的报表移动到其他文件夹中,然后将其从原始文件夹中删除。

重要

报表文件夹存在于这两个位置。 在删除任何报表文件夹之前,请确保正确移动所有报表。

将报表拆分为单独的文件夹

  1. 在报表管理器中,将支持拆分集合的报表移到该集合的相应文件夹中。 有关详细信息,请参阅 “移动项”页

拆分报表并启动两个集合后,请为 Azure DevOps 和 Analysis Services 数据库重新生成仓库。 必须执行此步骤,以确保在拆分集合后报表和仪表板对部署正常工作,并且不会与部署中的其他集合发生冲突。

重新生成数据仓库和 Analysis Services 数据库

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

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

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

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

    注意

    仓库将继续重新生成,在“开始重新生成”操作完成后,数据将继续重新填充。 整个过程可能需要几个小时才能完成,具体取决于部署大小和数据量。