将数据还原到相同位置

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

可以将备份中的数据还原到备份数据的 Azure DevOps SQL Server的同一服务器和实例。 例如,你可能想要将一组损坏的数据库还原到上一个已知良好的状态。

注意

请查看备份和还原概念页,了解还原同一服务器上的数据以便Azure DevOps Server。

TFS 2017 及更高版本已弃用 SharePoint 与 Azure DevOps Server 集成。

先决条件

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

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

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

步骤 1:停止服务

停止服务可帮助避免在还原过程中发生数据丢失或损坏,尤其是在你重命名数据库时。

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

  2. 输入以下命令:

    TFSServiceControl quiesce
    

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

步骤 2:重命名数据库

在使用还原向导还原Azure DevOps Server的数据库之前,必须先将其脱机,然后将其重命名。

停止数据库

  1. 打开 SQL Server Management Studio 。

    注意

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

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

  2. “服务器类型”中,选择“ 数据库引擎”。

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

    注意

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

    SQL Server Management Studio 。

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

  5. 按照SQL Server版本的指南重命名并停止要还原的每个数据库。 为数据库指定一个名称,指示它是旧版本的数据库,你将替换为还原的版本。 例如,可以将TFS_DefaultCollection重命名为TFS_DefaultCollection_Old。

步骤 3:还原 Azure DevOps 数据库

可以使用 Azure DevOps Server 中管理控制台中的“还原”向导还原Azure DevOps Server的数据。 “还原”向导也可还原用于报告的加密密钥。

还原数据库

  1. 打开用于Azure DevOps Server的管理控制台,导航到“计划备份”,然后启动“还原数据库”向导。

    启动还原向导

  2. 指定备份集的路径,然后选择用于还原的集。

    选择网络路径,然后选择还原集

  3. 完成向导并还原数据库。

    数据库被还原至新服务器

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

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

更新服务帐户

  1. 在运行SQL Server Reporting Services的服务器上,打开“计算机管理”,并启动以下组件(如果尚未启动):

    • 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

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

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

步骤 5:重新生成数据仓库

你可以重新生成数据仓库,而不是还原 TFS_Warehouse 和 TFS_Analysis 数据库。 如果部署包含大量数据,则重新生成仓库可能需要大量时间。 但是,此策略有助于确保正确同步所有数据。 重新生成仓库时,Azure DevOps Server会创建该仓库的实例,然后必须使用操作存储中的数据对其进行处理以填充该实例。

注意

如果在上一节中恢复了 TFS_Warehouse 和 TFS_Analysis 数据库,则不必执行以下过程。

重新生成仓库

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

  2. 输入以下命令:

    TFSConfig rebuildwarehouse /all /ReportingDataSourcePassword:Password

    其中,Password 是Reporting Services (TFSReports) 的数据源帐户的密码。

  3. 等待命令完成。

  4. 在报表服务器上,打开 Internet Explorer,并在“地址”栏中输入以下字符串:

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

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

    此时会打开 WarehouseControlWebService 页。

    注意

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

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

    重要

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

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

    此时将打开一个浏览器窗口。 服务在成功开始处理多维数据集时返回 True ;如果它不成功或当前正在处理多维数据集,则返回 False

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

    GetProcessingStatus 服务为所有作业返回值为 Idle 时,处理完成。

  8. 在 Azure DevOps 的应用程序层服务器上,打开 “计算机管理”,然后启动 Visual Studio Team Foundation 后台作业服务。

步骤 6:清除应用程序层服务器上的数据缓存

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

注意

通过清除数据缓存,你可帮助避免下载版本控制中文件的错误版本。 你应定期执行此操作,除非在还原期间更换部署中的所有硬件。 如果你要替换所有硬件,则可跳过此过程。

清除数据缓存

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

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

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

步骤 7:重启服务

还原数据之后,必须重新启动服务才能将服务器恢复到操作状态。

重新启动服务

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

  2. 输入以下命令:

    TFSServiceControl unquiesce

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

步骤 8:刷新客户端计算机上的缓存

刷新缓存以跟踪客户端计算机上的工作项

  1. 在新服务器上打开 Internet Explorer。

  2. 在“地址”栏中,输入以下地址以连接到 ClientService Web 服务:

    http://PublicURL/VirtualDirectory:8080/WorkItemTracking/v3.0/ClientService.asmx

    注意

    即使使用管理凭据登录,也可能需要以管理员身份启动 Internet Explorer,系统可能会提示你输入凭据。

  3. 选择“ StampWorkitemCache”,然后选择“ 调用”。 StampWorkitemCache 方法不返回任何数据。

刷新客户端计算机上的版本控制缓存

  1. 在客户端计算机上,打开具有管理权限的命令提示符窗口,并将目录更改为 Drive:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE

  2. 在命令提示符处输入以下命令,包括含有新服务器的服务器名称和端口号的集合 URL:

    tf workspaces /collection:http://ServerName:Port/VirtualDirectoryName/CollectionName

    在示例部署中,开发人员需要刷新作为 DefaultCollection 集合成员的项目的版本控制缓存,该集合托管在 Azure DevOps Server 的 FabrikamPrime 部署中:

    tf workspaces /collection:http://FabrikamPrime:8080/tfs/DefaultCollection

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