将数据还原到同一位置

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 帐户 /add /AccountType:ApplicationTier /account: AccountName

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

  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

    其中 ,密码 是 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;如果多维数据集当前正在处理,则返回 False

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

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

  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 命令