将数据还原到相同位置

Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2013

备注

Azure DevOps Server 以前名为 Visual Studio Team Foundation Server。

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

备注

有关在同一服务器上还原数据的简介,请查看备份和还原概念页Azure DevOps Server。

SharePoint TFS 2017 Azure DevOps Server版本弃用与 Azure DevOps Server 集成。

必备条件

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

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

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

步骤 1:停止服务

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

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

  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:更新所有服务帐户

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

更新服务帐户

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

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

  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 是 TFSReports Reporting Services (数据源帐户) 。

  3. 等待命令完成。

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

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

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

    "WarehouseControlWebService" 页随即打开。

    备注

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

  5. 选择 "GetProcessingStatus", 然后选择"调用"。

    重要

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

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

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

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

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

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

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

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

备注

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

清除数据缓存

  1. 在运行 Azure DevOps 的应用程序层服务或配置有 Azure DevOps 代理服务器的服务器上,打开命令提示符窗口,将目录更改为"驱动器: \ %programfiles% \ Azure DevOps Server 2019 应用程序层 Web \ 服务 \ \ _ tfs _ 数据"。

  2. 删除 _ tfs 数据 _ 目录中的所有内容。

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

步骤 7:重启服务

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

重新启动服务

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

  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

    有关详细信息,请参阅 工作区命令