拆分项目集合

Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018

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

  • 希望集合中的项目与组织中的业务单元一致,并且集合中的项目现在归不同单元所有。

  • 已从早期版本的 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 Enterprise Edition 或 SQL Server Datacenter Edition,并且你要将数据库还原到运行 Standard Edition 的服务器,则必须使用通过禁用 SQL Server 压缩生成的备份集。 只有禁用了数据压缩,才能成功地将 Enterprise Edition 或 Datacenter Edition 数据库还原到运行 Standard Edition 的服务器。 若要关闭压缩,请按照 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. 在“ 重新生成仓库和分析服务数据库 ”对话框中,选择“ 确定”。

    备注

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