拆分项目集合

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 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 确实匹配,请将 ID 更改为唯一 ID,然后再继续,方法是使用 /clone 参数对第二个集合运行 TFSConfig Collection 命令

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 数据库 ”对话框中,选择“ 确定”。

    注意

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