将数据还原到与当前服务器不同的服务器

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

备注

有关将数据还原到 Azure DevOps Server 的其他服务器的简介,请参阅 备份和还原

TFS 2017 之后,已弃用 SharePoint 与 Azure DevOps Server 的集成。

先决条件

若要执行此过程,你必须是以下组的成员或具有以下权限:

  • 运行 Azure DevOps 管理控制台的服务器或服务器上的管理员安全组的成员
  • SQL Server 系统管理员安全组的成员SQL Server 执行备份和创建维护计划权限都必须设置为“允许”,才能托管数据库的 SQL Server 实例。
  • Azure DevOps 数据库和 Analysis Services 数据库的 sysadmin 安全组的成员
  • TFS_Warehouse数据库的授权用户。
  • 如果部署使用 SharePoint 产品,则为要为其还原 SharePoint 产品的数据库的场的服务器场管理员组的成员

除了这些权限,你可能必须在运行 Windows Server 2008、Windows Server 2008 R2、Windows Vista 或 Windows 7 的计算机上满足以下要求:

  • 若要遵循命令行过程,可能需要通过依次选择“开始”、“命令提示符和“以管理员身份运行”来打开提升的命令提示符。
  • 若要遵循需要 Internet Explorer 的过程,可能需要以管理员身份启动它,方法是选择“开始”、“所有程序”、“右键单击 Internet Explorer”,然后选择“以管理员身份运行”。
  • 若要访问 Reporting Services 的报表管理器、报表或网站,可能需要将这些网站添加到 Internet Explorer 中受信任的站点列表中,或以管理员身份启动 Internet Explorer。

有关详细信息,请参阅用户帐户控制

步骤 1:备份数据

若要从 Azure DevOps Server 的原始部署还原数据,必须为 SQL Server 数据库创建一组完整的数据备份。 如果数据已加密,则还必须具有加密密钥及其密码。

有关详细信息,请参阅 备份 Azure DevOps Server备份 Reporting Services 加密密钥

重要

如果部署配置为使用 SQL Server Reporting Services,并且想要将这些数据库还原到其他服务器,则必须备份TFS_Warehouse和TFS_Analysis数据库。 不能只重新生成仓库,就像还原到同一服务器或实例时一样。 还必须备份 SharePoint 产品的数据库,以将它们移动到要为其还原 Azure DevOps 数据库的服务器或实例。 这些数据库包括 SharePoint 产品(SharePoint_AdminContent_ID)的管理数据库以及内容和配置数据库。

步骤 2:在新硬件上安装和配置 SQL Server

若要还原 Azure DevOps 的数据,请在将 Azure DevOps Server 的数据库移动到的计算机上安装 SQL Server。 安装的 SQL Server 版本必须与托管数据库的原始服务器上的版本完全匹配。 此要求包括 Service-Pack 级别、排序规则设置和语言版本。 如果匹配项不精确,则可能无法还原数据,或者即使可以还原数据,Azure DevOps Server 也可能无法正常运行。

在新环境中安装 SQL Server,准备 SQL Server 以还原 Azure DevOps 的数据,并确保其正常运行。 或者,在已安装匹配版本的服务器上创建 SQL Server 实例。

有关详细信息,请参阅 “安装入门”。

步骤 3:停止服务

在还原数据之前,必须停止 Azure DevOps Server 在每个服务器上使用的所有服务。 如果已安装可选组件(如 SharePoint 产品或 Reporting Services),则必须在安装这些组件的服务器上停止这些服务。

停止 Azure DevOps Server 使用的服务:

  1. 在运行 Azure DevOps 应用程序层服务的服务器上,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。

  2. 输入以下命令:

    TFSServiceControl quiesce
    

    有关详细信息,请参阅 TFSServiceControl 命令

步骤 4:还原数据库

停止服务后,可以使用 SQL Server 提供的工具还原 Azure DevOps 的数据。

注意

必须将所有数据库还原到同一时间点,否则数据库将不同步。 以下过程假定使用标记的事务来帮助确保 Azure DevOps Server 使用的数据库同步。 有关详细信息,请参阅 备份 Azure DevOps Server。 如果部署使用 SharePoint 产品,则应遵循部署中该产品版本的指南。 有关详细信息,请参阅备份和恢复(SharePoint Server 2010),保护和还原场(Office SharePoint Server 2007),或保护和还原场(Windows SharePoint Services 3.0)。

打开“ 还原数据库 ”对话框:

  1. 登录到要还原数据库的服务器。

  2. 依次选择“开始”、“所有程序”、“Microsoft SQL Server 2008”,然后选择“SQL Server Management Studio”。

    备注

    有关如何还原数据库的详细信息,请参阅 实现 SQL Server 数据库的还原方案。

    将打开“连接到服务器”对话框。

  3. “服务器类型”列表中,选择数据库引擎

  4. “服务器名称”中,选择或输入数据层服务器和数据库实例的名称,然后选择“ 连接”。

    备注

    如果 SQL Server 安装在群集上,则服务器名称是群集的名称,而不是计算机名称。

    SQL Server Management Studio 。

  5. 展开“ 数据库” 节点以显示构成 Azure DevOps 数据层的数据库列表。

在已安装和配置 SQL Server 的每个服务器上完成以下数据库的还原数据库过程(在下一部分中):

  • TFS_Configuration - 此数据库名称可能包含TFS_配置之间的其他字符。
  • TFS_CollectionName - 每个项目集合都有自己的数据库。 例如,如果有五个项目集合,则有五个数据库,每个数据库都由项目集合的名称来区分。 这些数据库可能位于 SQL Server 的同一实例、单独的实例或单独的物理服务器上。 必须备份每个数据库,然后还原每个数据库。
  • TFS_Warehouse - 此数据库名称可能包含TFS_Warehouse 之间的其他字符

在运行 Reporting Services 的服务器上,如果已为部署配置了一个数据库,并且需要将数据库还原到其他服务器:

  • ReportServer - 如果使用命名实例,此数据库将命名为 ReportServer$InstanceName
  • ReportServerTempDB - 如果使用命名实例,此数据库将命名为 ReportServerTempDB$InstanceName

在运行 SharePoint 产品的服务器或服务器上,如果已使用一个或多个 SharePoint Web 应用程序配置了部署,并且需要将数据库还原到其他服务器:

  • SharePoint 产品的内容数据库 (WSS_Content) - 包含 SharePoint 产品数据的数据库的名称将因安装的 SharePoint 产品版本以及安装该产品的用户是否自定义名称而有所不同。 此外,如果 SharePoint 产品安装在 Azure DevOps Server 的单独服务器上,则这些数据库可能不会驻留在数据层服务器上。 如果数据库驻留在不同的服务器上,则必须备份、还原和配置它们与 Azure DevOps Server 分开。 但是,应首先同步数据库的维护,以避免同步错误。

    若要还原 SharePoint 产品使用的数据库,应遵循部署使用的软件版本的指南。 有关详细信息,请参阅备份和恢复(SharePoint Server 2010),保护和还原场(Office SharePoint Server 2007),或保护和还原场(Windows SharePoint Services 3.0)。

在运行Microsoft Project Server 的服务器上,如果已将部署与 Project Server 集成,并且需要将数据库还原到其他服务器:

在运行 SQL Server Analysis Services 的服务器上,如果已为部署配置了一个数据库,并且需要将数据库还原到其他服务器:

  • TFS_Analysis

有关这些数据库的详细信息,请参阅 了解备份 Azure DevOps Server

还原数据库

  1. 右键单击要还原的数据库,选择“任务”,选择“还原”,然后选择“数据库”。

    “还原数据库” 对话框随即打开。

  2. “源”下,选择“从设备,然后选择省略号按钮(...)。

  3. “指定备份 ”对话框中,指定备份文件的位置,然后选择“ 确定”。

    必须先还原完整备份,然后还原差异备份,然后按创建事务日志备份的顺序进行还原。

  4. 在“选择要还原的备份集”下,指定要还原的备份集。

    如果使用标记的事务创建了备份集,请确保还原完整数据库、差异数据库和事务日志数据库。 有关标记的事务的详细信息,请参阅 备份 Azure DevOps Server

  5. “选择页面 ”窗格中,选择“ 选项”,然后选择“ 覆盖现有数据库 ”复选框。

  6. 在“将数据库文件还原为列表”中,验证路径是否与当前数据库路径匹配。

  7. “恢复”状态下,执行以下步骤之一:

    • 如果使用标记的事务,请选择“ 保留数据库不可操作”,并且不回滚未提交的事务。可以还原其他事务日志。(RESTORE WITH RECOVERY).
    • 如果未使用标记的事务,并且未应用其他事务日志,请选择“ 让数据库保持可供使用”。
    • 如果未使用标记的事务,但要应用其他事务日志,请选择“ 保留数据库不可操作”。
  8. 选择“确定”

    此时会显示进度图标。

  9. 当 SQL Server Management Studio 对话框出现并确认成功还原时,请选择“确定返回到对象资源管理器

  10. 如果使用标记的事务,请右键单击刚刚还原的数据库,选择“任务”,选择“还原,然后选择“事务日志”。

    此时会打开“ 还原事务日志 ”窗口。

  11. “常规 ”页上,请确保在“数据库”列表中突出显示 相应的数据库

  12. “选择要还原的事务日志”下,选中要还原的日志旁边的复选框。

  13. 在“还原到”下,选择“标记的事务”。

    此时 会打开“选择标记事务 ”窗口。

  14. “选择要在列表中停止还原 的已标记事务”中,选中还原事务标记旁边的复选框,然后选择“ 确定”。

    重要

    若要成功还原数据,必须使用具有相同日期和时间的相同事务标记对所有数据库。

  15. “还原事务日志 ”窗口中,选择“ 确定”。

    此时会显示进度图标。

  16. 当 SQL Server Management Studio 对话框出现并确认成功还原时,选择“确定”。

    有关详细信息,请参阅 “应用事务日志备份”。

备注

如果还原了 Reporting Services 的数据库,则还必须还原其加密密钥。 有关详细信息,请参阅 还原加密密钥(Reporting Services 配置)。

步骤 5:将 SharePoint 产品重定向到内容数据库的新位置

如果未将 SharePoint 产品配置为用于部署 Azure DevOps Server,或者未还原 SharePoint 产品的数据库,则可以跳过此过程。

还原 SharePoint 产品的内容数据库(WSS_Content)后,必须将运行 SharePoint 产品的服务器重定向到该数据库的新位置。 必须先运行此数据库,然后才能使用其数据库的新位置重新配置 Azure DevOps Server。

若要重定向项目站点以在新数据层服务器上使用内容数据库:

  • 登录到托管 SharePoint 产品的服务器,并重定向它以在新服务器上使用内容数据库。

有关详细信息,请参阅 重定向 SharePoint 产品以使用新的内容数据库

步骤 6:在 Reporting Services Configuration Manager 中更改数据库

如果没有配置为用于部署 Azure DevOps Server 的报表服务器,或者未还原报表服务器的数据库,则可以跳过此过程。

将 SharePoint 产品重定向到新的内容数据库后,必须将 Reporting Services 重定向到其数据库的新位置(ReportServer 和ReportServer_TempDB)。 除非你执行此过程,否则任何项目都不会提供任何报告。 这些数据库必须可正常运行,然后才能使用其数据库的新位置重新配置 Azure DevOps Server。

若要重定向 Reporting Services 以连接到新服务器,请执行以下操作:

步骤 7:更改已还原数据库的所有权

使用 TFSConfig Accounts ResetOwner 命令将还原的数据库的数据库所有者登录名更改为当前用户。 在执行后续步骤序列之前,请确保使用相应的用户帐户登录。 例如,可以使用安装了 Azure DevOps Server 的帐户(称为 TFSSETUP)。 该帐户至少必须是 Azure DevOps Server 中的 Azure DevOps Administrators 组的成员,并且是 SQL Server 中 sysadmin 组的成员

将还原的数据库所有权更改为当前用户:

  1. 登录到 Azure DevOps 的应用程序层服务器,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。

  2. 输入以下命令,其中 ServerName(采用 ServerNameServerName\InstanceName 格式)是托管 Azure DevOps Server 数据库的 SQL Server 实例的名称,DatabaseName 是配置数据库的名称(默认情况下为TFS_Configuration):

    TFSConfig 帐户 /ResetOwner /SQLInstance:ServerName /DatabaseName:DatabaseName

    此命令更改 Azure DevOps Server 使用的所有数据库的所有权。

步骤 8:将 Azure DevOps Server 重定向到远程收集数据库

如果集合、Analysis Services 和报表的所有数据库都位于与配置数据库相同的服务器和实例上,则可以跳过此过程。

必须将 Azure DevOps Server 重定向到托管在独立于服务器或服务器的任何集合数据库与配置数据库。 此外,如果使用命名实例,或者TFS_Analysis或TFS_Warehouse数据库托管在与TFS_Configuration不同的服务器上,则必须运行 RemapDBs 命令。

将 Azure DevOps Server 重定向到远程数据库:

  1. 登录到 Azure DevOps 的应用程序层服务器,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。

  2. 输入以下命令,其中 ServerName 是托管 Azure DevOps Server 配置数据库的 SQL Server 实例的名称, TFS_Configuration 为 Azure DevOps Server 的还原配置数据库的名称, ServerName2 是托管远程集合的服务器的名称。 部署中配置的服务器可以具有任意数量的 ServerName 参数。 可以使用 ServerName ServerName InstanceName 格式指定 ServerName。\ 如果不使用默认实例,则必须指定实例名称:

    TFSConfig RemapDBs /DatabaseName: ServerName; TFS_Configuration /SQLInstances:ServerName,ServerName2 /AnalysisInstance: ServerName2 /AnalysisDatabaseName:DatabaseName

    备注

    /SQLInstances 中,必须指定托管 Azure DevOps Server 数据库的所有实例(用逗号分隔)。 有关详细信息,请参阅 RemapDBs 命令

步骤 9:更新所有服务帐户

必须更新 Azure DevOps Server(TFSService)的服务帐户和数据源帐户(TFSReports)。 即使这些帐户未更改,也必须更新信息,以确保帐户的标识和格式适合新服务器。

备注

如果在部署中有多个应用程序层服务器,则必须在每个服务器上更新服务帐户。

更新服务帐户:

  1. 在报表服务器上,打开计算机管理,如果尚未启动这些组件,请启动以下组件:

    • ReportServer 或 ReportServer$InstanceName (应用程序池)
    • SQL Server Reporting Services (TFSINSTANCE
  2. 在应用程序层服务器上,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。

  3. 在命令提示符处,输入以下命令以添加 Azure DevOps 的服务帐户,其中 DatabaseName 是配置数据库的名称(默认情况下,TFS_Configuration):

    TfsConfig Accounts /add /AccountType:ApplicationTier /account: AccountName /SQLInstance: ServerName /DatabaseName: DatabaseName

    有关详细信息,请参阅 “帐户”命令

  4. 如果部署使用这些资源,请使用 Accounts 命令为报表服务器添加数据源帐户和 Azure DevOps 代理服务器的代理帐户。

步骤 10:注册还原的数据库的位置

如果同时将应用程序层还原到其他服务器,则可以跳过此过程。

更新服务帐户信息后,将应用程序层重定向到还原的数据库的新位置。

备注

如果部署中有多个应用程序层服务器,请在其中每个服务器上注册数据库的位置。

若要注册数据库的位置,请执行以下操作:

  1. 在应用程序层服务器上,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。

  2. 在命令提示符处,输入以下命令,其中 DatabaseName 是配置数据库的名称(默认情况下,TFS_Configuration):

    TfsConfig registerDB /SQLInstance: ServerName /DatabaseName: DatabaseName

    有关详细信息,请参阅 RegisterDB 命令

步骤 11:配置报告和分析服务

如果不在部署过程中使用 Analysis Services 或 Reporting Services,则可以跳过此过程。 如果部署使用报表服务器,则必须将 Azure DevOps Server 重定向到其位置,重启仓库,然后手动重新生成 Reporting Services 和 Analysis Services 的数据库。

备注

即使已还原TFS_Warehouse和TFS_Analysis数据库,也必须完成此过程,如上一部分所述。

重新配置报表和 Analysis Services:

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

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

  3. “报告”中,选择“ 编辑”。

  4. “脱机 确认消息”中,选择“ 确定”。

    此时会 打开 Reporting Services 对话框。

  5. 选中“使用报表服务器”复选框。

  6. 选择“仓库”选项卡,然后在“服务器”中输入或选择报表服务器的名称。

  7. “数据库”中,输入 Azure DevOps Server 的仓库数据库的名称。

    默认情况下,此数据库命名为TFS_Warehouse。

  8. (可选)选择 “测试连接 ”,确保指定的数据库有效。

  9. 选择 Analysis Services 选项卡。

  10. “服务器”中,输入或选择运行 SQL Server Analysis Services 的服务器的名称。

  11. Database 中,输入 Azure DevOps Server 的 Analysis Services 数据库的名称。

    默认情况下,此数据库的名称TFS_Analysis。

  12. 如果不使用数据库的默认实例,请选中“ 指定非默认实例 ”复选框,然后输入或选择实例的名称。

  13. (可选)选择“ 测试连接 ”以确保指定的数据库有效。

  14. 用户名和密码中,输入数据源帐户(TFSReports)的帐户名称和密码(如果有)。

  15. “报表”选项卡上的“服务器”中,输入或选择报表服务器的名称,然后选择“填充 URL”。

  16. 用户名和密码中,输入数据源帐户(TFSReports)的帐户名称和密码(如果有)。

  17. “默认路径”中,输入存储报表的相对路径,然后选择“ 确定”。

  18. 在管理控制台中,选择“启动作业以重启报告。

  19. 打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。

  20. 输入以下命令以重新生成 Analysis Services 的数据库:

    TFSConfig RebuildWarehouse /AnalysisServices /ReportingDataSourcePassword: Password

    密码 是 Reporting Services 的数据源帐户(TFSReports)的密码。

  21. 等待 TFSConfig 命令成功完成。

  22. 在报表服务器上,打开 Internet Explorer,在地址栏中输入以下字符串,然后按 Enter:

    http://localhost:8080/<VirtualDirectory>/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx
    

    对于 VirtualDirectory,输入安装 Azure DevOps Server 时指定的 Internet Information Services (IIS)的虚拟目录。 默认情况下,此目录命名 为 tfs

    WarehouseControlWebService ”页随即打开。

    备注

    必须运行 Azure DevOps Server 应用程序池才能使用仓库控制 Web 服务。

  23. 选择 GetProcessingStatus,然后选择“ 调用”。

    重要

    服务应返回所有作业的 “空闲” 值,该值指示未处理多维数据集。 如果返回其他值,请重复此步骤,直到 为所有作业返回 Idle

  24. WarehouseControlWebService 页上,选择 ProcessAnalysisDatabase,然后选择“ 调用”。

    此时会打开浏览器窗口。 如果服务成功启动多维数据集的处理,则返回 True;如果它未成功,则返回 False;如果多维数据集当前正在处理,则返回 False

  25. 若要确定多维数据集的处理时间,请返回到 WarehouseControlWebService 页,选择 GetProcessingStatus,然后选择“ 调用”。

    GetProcessingStatus 服务返回所有作业的空闲值时,处理已完成。

    有关详细信息,请参阅 手动处理数据仓库和 Analysis Services 多维数据集

  26. 在应用程序层服务器上,打开计算机管理,并启动 Visual Studio Team Foundation 后台作业代理。

步骤 12:清除服务器上的数据缓存

Azure DevOps 部署中的每个应用程序层服务器都使用文件缓存,以便用户可以更快地从数据层服务器下载文件。 还原部署时,应在每个应用程序层服务器上清除此缓存。 否则,当用户从版本控制下载文件时,不匹配的文件 ID 可能会导致问题。 如果部署使用 Azure DevOps 代理服务器,则还必须清除配置为代理的每个服务器上的数据缓存。

备注

执行此步骤有助于防止在版本控制中下载不正确的文件版本。 除非在还原过程中替换部署中的所有硬件,否则应执行此步骤。 如果要替换所有硬件,可以跳过此过程。

若要清除数据缓存,

  1. 在运行 Azure DevOps 的应用程序层服务或使用 Azure DevOps 代理服务器配置的服务器上,打开命令提示符窗口,然后将目录更改为 Drive:\%programfiles%\Microsoft Team Foundation Server 2010\Application Tier\Web Services\_tfs_data。

  2. 删除_tfs_data目录中的所有内容。

  3. 针对每个应用程序层服务器以及部署中运行 Azure DevOps 代理服务器的每个服务器重复这些步骤。

步骤 13:重启服务

还原数据后,重启服务,以便部署将运行并可供用户使用。

重启 Azure DevOps Server 使用的服务:

  1. 在运行 Azure DevOps 应用程序层服务的服务器上,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。

  2. 输入以下命令:

    TFSServiceControl unquiesce
    

    有关详细信息,请参阅 TFSServiceControl 命令

步骤 14:刷新客户端计算机上的数据缓存

在客户端计算机上刷新数据缓存:

  • 登录到应用程序层服务器,并使用 ClientService Web 服务强制客户端更新缓存以跟踪工作项。

    有关详细信息,请参阅 刷新客户端计算机上的数据缓存。