准备测试运行迁移

本文重点介绍数据迁移工具所需的团队准备和文件生成。

突出显示的“准备迁移七个阶段”的测试运行阶段的关系图。

先决条件

开始准备测试运行迁移之前完成验证阶段

生成迁移设置

执行以下步骤以生成迁移规范和相关文件,以排队迁移集合数据库。

  1. 使用以下参数运行数据迁移工具 prepare 命令:

    /collection:http://localhost:8080/tfs/DefaultCollection/ tenantDomainName:contoso.com /Region:CUS

    • 租户域名选项是公司 Microsoft Entra ID 租户的名称。
    • prepare 命令需要 Internet 访问。 如果 Azure DevOps Server 缺少 Internet 连接,请从其他计算机运行该命令。
    • 术语“组织区域”是指计划将集合迁移到 Azure DevOps Services 的位置。 你之前选择了一个区域并记录了其速记代码。 在 prepare 命令中使用此代码。
  2. 使用有权读取 Microsoft Entra ID 租户中所有用户的信息的租户中的用户登录。

配置迁移规范文件

迁移规范文件是一个 JSON 文件,指示数据迁移工具如何执行以下操作。

  • 配置已迁移的组织
  • 指定源位置
  • 自定义迁移

许多字段在准备步骤中自动填充,但必须配置以下字段:

  • 组织名称: 要创建用于迁移数据的组织的名称。
  • 位置: 要上传到 Azure 存储容器的数据库和迁移文件的备份。 此字段指定迁移工具用于安全连接到 Azure 存储容器并从中读取源文件的 SAS 密钥。 第 5 阶段稍后将介绍创建存储容器,在排队进行新迁移之前,第 6 阶段将介绍生成 SAS 密钥。
  • DACPAC: 打包集合的 SQL 数据库的文件。
  • 迁移类型: 迁移类型:测试运行或生产运行。

每个迁移规范文件都适用于单个集合。 如果尝试使用为另一个集合生成的迁移规范文件,则迁移不会启动。 需要为要迁移的每个集合准备测试运行,并使用生成的迁移规范文件对迁移进行排队。

查看标识映射日志文件

标识映射日志至关重要,与迁移的实际数据一样重要。 检查日志文件时,了解标识迁移的工作原理和潜在结果。 迁移标识时,它可以是活动标识或历史标识。 活动标识可以登录到 Azure DevOps Services,而历史标识则无法登录。 服务决定使用哪种类型。

注意

将标识迁移为历史标识后,无法将其转换为活动标识。

活动标识

活动标识是指迁移后 Azure DevOps Services 中的用户标识。 在 Azure DevOps Services 中,这些标识已获得许可,并显示为组织中的用户。 标识在标识映射日志文件的“预期导入状态”列中标记为活动状态。

历史标识

在标识映射日志文件的 “预期导入状态” 列中映射历史标识。 文件中没有行条目的标识也将成为历史标识。 没有行条目的标识示例可能是不再在公司工作的员工。

与活动标识不同,历史标识:

  • 迁移后无权访问组织。
  • 没有 许可证。
  • 不要 显示为组织中的用户。 保留的只是该标识在组织中的名称的概念,以便以后可以搜索其历史记录。 建议对不再在公司工作或不需要进一步访问组织的用户使用历史标识。

注意

标识迁移为历史记录后,无法使其处于活动状态。

许可证

在迁移期间,将为标识映射日志的“预期导入状态”列中显示为“活动”的所有用户自动分配许可证。 如果自动许可证分配不正确,可以通过在迁移完成后编辑一个或多个用户的“访问级别”来更改它。

分配可能并不总是完美的,因此,直到下个月的第一个月才根据需要重新分配许可证。 如果到下个月的第一个月,你不会将订阅链接到组织并购买正确的许可证数,则所有宽限期许可证都会被吊销。 或者,如果自动分配分配的许可证数比下个月购买的许可证多,则我们不会向你收取额外的许可证费用,但我们撤销了所有未付许可证。

为了避免失去访问权限,建议在每月第一个月之前链接订阅并购买所需的许可证,因为计费按月运行。 对于所有测试运行,只要组织处于活动状态,许可证就是免费的。

Azure DevOps 订阅

默认情况下,不会为迁移分配Visual Studio 订阅。 相反,具有Visual Studio 订阅的用户会自动升级为使用该许可证。 如果用户的工作组织正确链接,Azure DevOps Services 会在迁移后首次登录时自动应用其 Visual Studio 订阅权益。

如果用户不会自动升级以在 Azure DevOps Services 中使用 Visual Studio 订阅,则无需重复测试运行迁移。 Visual Studio 订阅链接是在迁移范围之外发生的。 如果工作组织在迁移前后正确链接,则用户在下次登录时会自动升级其许可证。 升级后,下次将用户迁移到组织时会自动升级。

仅限制对Azure DevOps Services IP 的访问

将Azure 存储帐户的访问权限限制为仅来自 Azure DevOps Services 的 IP。 可以通过仅允许来自集合数据库迁移过程中涉及的 Azure DevOps Services IP 的连接来限制访问。 需要授予存储帐户访问权限的 IP 取决于要迁移到的区域。

选项 1:使用服务标记

可以通过门户或以编程方式将服务标记添加到 azuredevops 网络安全组或防火墙,轻松允许来自所有 Azure DevOps Services 区域的连接。

选项 2:使用 IP 列表

IpList使用命令获取需要授予访问权限以允许来自特定 Azure DevOps Services 区域的连接的 IP 列表。

帮助文档中包括从 Azure DevOps Server 实例本身和远程计算机运行迁移器的说明和示例。 如果从 Azure DevOps Server 实例的应用程序层之一运行命令,则命令应具有以下结构:

Migrator IpList /collection:{CollectionURI} /tenantDomainName:{name} /region:{region} 

可以通过门户或以编程方式将 IP 列表添加到网络安全组或防火墙。

为 SQL Azure 配置 IP 防火墙例外

本部分仅适用于为 SQL Azure 配置防火墙例外。 有关 DACPAC 迁移,请参阅配置Azure 存储防火墙和虚拟网络

数据迁移工具要求仅在端口 1433上为入站连接配置 Azure DevOps Services IP。

执行以下步骤,为 SQL Azure VM 的 Azure 网络层中处理的必要 IP 授予异常。

  1. 登录 Azure 门户。
  2. 转到 SQL Azure VM。
  3. 在“设置”中,选择“网络”。
  4. 选择“添加入站端口规则”。 SQL Azure VM 网络接口页上的“添加入站端口规则”按钮的屏幕截图。
  5. 选择“高级,为特定 IP 配置入站端口规则。 “添加入站安全规则”窗格上“高级”按钮的屏幕截图。
  6. “源”下拉列表中,选择“IP 地址,输入需要授予异常的 IP 地址,将目标端口范围1433设置为“名称”框中,输入最能描述要配置的异常的名称。

根据其他配置的入站端口规则,可能需要更改 Azure DevOps Services 异常的默认优先级,因此它们不会被忽略。 例如,如果“拒绝所有入站连接到 1433”规则的优先级高于 Azure DevOps Services 异常,则数据迁移工具可能无法成功连接到数据库。

已完成的入站端口规则配置的屏幕截图。

重复添加入站端口规则,直到授予所有必需的 Azure DevOps Services IP 例外。 缺少一个 IP 可能会导致迁移无法启动。

迁移大型集合

对于数据迁移工具警告的数据库太大,迁移到 Azure DevOps Services 需要采用不同的数据打包方法。 如果不确定集合是否超过大小阈值,则应对集合运行数据迁移工具验证。 验证可让你知道是否需要使用 SQL Azure VM 方法进行迁移。

确定是否可以减小集合大小

检查是否可以清理旧数据。 随着时间的推移,集合可能会生成大量数据。 此增长是 DevOps 过程的自然组成部分,但你可能会发现不需要保留所有数据。 不再相关的数据的一些常见示例是较旧的工作区和生成结果。

数据迁移工具会扫描集合,并将其与之前提及的限制进行比较。 然后,它会报告集合是否符合 DACPAC 或 SQL 迁移方法的条件。 一般来说,如果集合足够小,足以适应 DACPAC 限制,则可以使用更快、更简单的 DACPAC 方法。 但是,如果集合太大,则需要使用 SQL 迁移方法,该方法涉及设置 SQL Azure VM 并手动迁移数据库。

大小限制

当前限制为:

  • DACPAC 的总数据库大小(数据库元数据 + Blob)为 150 GB,如果超出此限制,则需要执行 SQL 迁移方法。
  • DACPAC 的 30 GB 单个表大小(数据库元数据 + Blob),如果任何单个表超出此限制,则需要执行 SQL 迁移方法。
  • SQL 迁移方法的数据库元数据大小为 1,536 GB。 超过此限制会发出警告,我们建议你保持此大小,以便成功迁移。
  • SQL 迁移方法的 2,048 GB 数据库元数据大小。 超出此限制会导致错误,因此无法执行迁移。
  • SQL 迁移方法的 Blob 大小没有限制。

清理较旧且不再相关的项目时,可能会删除比预期更多的空间,并且可以确定是否使用 DACPAC 迁移方法或 SQL Azure VM。

重要

删除旧数据后,除非还原集合的较旧备份,否则无法恢复它。

如果处于 DACPAC 阈值下,请按照说明生成用于迁移的 DACPAC。 如果仍无法在 DACPAC 阈值下获取数据库,则需要设置 SQL Azure VM 以迁移到 Azure DevOps Services。

设置 SQL Azure VM 以迁移到 Azure DevOps Services

执行以下高级步骤以设置 SQL Azure 虚拟机(VM)以迁移到 Azure DevOps Services。

  1. 设置 SQL Azure VM
  2. 配置 IP 防火墙例外
  3. 在 VM 上还原数据库
  4. [为迁移配置集合
  5. 配置迁移规范文件以面向 VM

设置SQL Azure VM

可以从Azure 门户快速设置 SQL Azure VM。 有关详细信息,请参阅使用 Azure 门户 通过 SQL Server 预配 Windows 虚拟机。

SQL Azure VM 和附加数据磁盘的性能对迁移性能产生重大影响。 因此,我们强烈建议执行以下任务:

  • 在 VM 大小级别或更高级别 D8s_v5_* 选择 VM 大小。
  • 使用托管磁盘。
  • 咨询 虚拟机和磁盘性能。 确保已配置基础结构,使 VM IOPS(每秒输入/输出)和存储 IOPS 不会成为迁移性能的瓶颈。 例如,确保附加到 VM 的数据磁盘数足以支持 VM 中的 IOPS。

Azure DevOps Services 在全球多个 Azure 区域中可用。 若要确保迁移成功启动,请将数据置于正确的区域中至关重要。 如果在错误的位置设置 SQL Azure VM,迁移将无法启动。

重要

Azure VM 需要公共 IP 地址。

如果使用此迁移方法,请在受支持的区域中创建 VM。 尽管 Azure DevOps Services 在 美国(美国)的多个区域中可用,但只有 Central 美国 区域接受新组织。 现在无法将数据迁移到其他美国 Azure 区域。

注意

DACPAC 客户应查阅“步骤 3:上传 DACPAC 文件](migration-test-run.md#)”部分中的区域表。 上述准则仅适用于SQL Azure VM。 如果你是 DACPAC 客户,请参阅 受支持的 Azure 区域进行迁移

使用以下 SQL Azure VM 配置:

  • 将 SQL 临时数据库 配置为使用驱动器 C 以外的驱动器。理想情况下,驱动器应具有足够的可用空间;至少等效于数据库 的最大表。
  • 如果源数据库在减小其大小后仍超过 1 TB(TB),则需要附加更多 1 TB 磁盘并将其合并为单个分区,以还原 VM 上的数据库。
  • 如果集合数据库的大小超过 1 TB,请考虑对临时数据库和集合数据库使用 SSD(固态硬盘)。 此外,请考虑使用具有 16 个虚拟 CPU(vCPU)和 128 GB(GB)RAM(随机访问内存)的大型 VM。

在 VM 上还原数据库

设置和配置 Azure VM 后,需要将分离的备份从 Azure DevOps Server 实例迁移到 Azure VM。 收集数据库需要在 SQL 实例上还原,并且不需要在 VM 上安装Azure DevOps Server。

为迁移配置集合

在 Azure VM 上还原集合数据库后,请配置 SQL 登录以允许 Azure DevOps Services 连接到数据库以迁移数据。 此登录仅允许对单一数据库进行读取访问。

  1. 在 VM 上打开 SQL Server Management Studio,然后针对要迁移的数据库打开一个新的查询窗口。

  2. 将数据库的恢复设置为简单:

    ALTER DATABASE [<Database name>] SET RECOVERY SIMPLE;
    
  3. 为数据库创建 SQL 登录,并分配该登录“TF标准版XECROLE”,如以下示例所示。

    USE [<database name>] 
    CREATE LOGIN <pick a username> WITH PASSWORD = '<pick a password>' 
    CREATE USER <username> FOR LOGIN <username> WITH DEFAULT_SCHEMA=[dbo] 
    EXEC sp_addrolemember @rolename='TFSEXECROLE', @membername='<username>'
    

请参阅 SQL 命令的以下示例:

    ALTER DATABASE [Foo] SET RECOVERY SIMPLE; 
     
    USE [Foo] 
    CREATE LOGIN fabrikam WITH PASSWORD = 'fabrikamimport1!' 
    CREATE USER fabrikam FOR LOGIN fabrikam WITH DEFAULT_SCHEMA=[dbo] 
    EXEC sp_addrolemember @rolename='TFSEXECROLE', @membername='fabrikam'

重要

在 VM 上的 SQL Server Management Studio 中启用 SQL Server 和Windows 身份验证模式。 如果未启用身份验证模式,迁移将失败。

配置迁移规范文件以面向 VM

更新迁移规范文件,以包含有关如何连接到 SQL Server 实例的信息。 打开迁移规范文件并进行以下更新:

  1. 从源文件对象中删除 DACPAC 参数。 更改前的迁移规范如以下示例代码所示。

    更改前迁移规范的屏幕截图。

    更改后的迁移规范如以下示例代码所示。

    更改后迁移规范的屏幕截图。

  2. 输入所需的参数,并在规范文件中的源对象中添加以下属性对象。

    "Properties": 
    { 
        "ConnectionString": "Data Source={SQL Azure VM Public IP};Initial Catalog={Database Name};Integrated Security=False;User ID={SQL Login Username};Password={SQL Login Password};Encrypt=True;TrustServerCertificate=True"  
    }
    

应用更改后,迁移规范如以下示例所示。

引用 SQL Azure VM 的迁移规范的屏幕截图。

迁移规范现已配置为使用 SQL Azure VM 进行迁移。 继续执行迁移的其余准备步骤。 迁移完成后,请务必删除 SQL 登录或轮换密码。 迁移完成后,Microsoft 不会保留登录信息。

在所选数据中心中创建Azure 存储容器

使用适用于 Azure DevOps 的数据迁移工具需要在与最终 Azure DevOps Services 组织相同的 Azure 数据中心内拥有Azure 存储容器。 例如,如果打算在 Central 美国 数据中心中创建 Azure DevOps Services 组织,请在同一数据中心中创建Azure 存储容器。 此操作极大地缩短了迁移 SQL 数据库所需的时间,因为传输发生在同一数据中心内。

有关详细信息,请参阅创建存储帐户

设置帐单

将宽限期置于新迁移的 Azure DevOps Services 组织,以允许团队完成所需的任何步骤并更正许可证分配。 如果预计可能想要购买更多用户计划、生成或部署管道、托管生成服务、托管负载测试服务,例如,强烈建议确保已准备好 Azure 订阅以链接到已迁移的组织。 宽限期将在完成迁移后的下个月的第一天结束。

当需要执行链接时,我们会在迁移后阶段(链接)中再次提醒你。 此准备步骤更要确保知道在该后续步骤中使用的 Azure 订阅。 有关详细信息,请参阅 为组织设置计费。

后续步骤