将数据还原到同一位置
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:停止服务
停止服务有助于防止还原过程中数据丢失或损坏,尤其是在重命名数据库时。
在运行 Azure DevOps 应用程序层服务的服务器上,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。
输入以下命令:
TFSServiceControl quiesce
有关详细信息,请参阅 TFSServiceControl 命令。
步骤 2:重命名数据库
在使用还原向导还原 Azure DevOps Server 的数据库之前,必须先将其脱机,然后对其进行重命名。
停止数据库
打开 SQL Server Management Studio。
注意
有关如何还原数据库的详细信息,请参阅 实现 SQL Server 数据库的还原方案。
将打开“连接到服务器”对话框。
在“服务器类型”中,选择数据库引擎。
在 “服务器名称”中,输入或选择数据层服务器和数据库实例的名称,然后选择“ 连接”。
注意
如果 SQL Server 安装在群集上,则服务器名称是群集的名称,而不是计算机名称。
SQL Server Management Studio 。
展开“ 数据库” 节点以显示构成 Azure DevOps 数据层的数据库列表。
按照 SQL Server 版本的指南重命名并停止要还原的每个数据库。 为数据库指定一个名称,指示它是将替换为还原版本的旧版本的数据库。 例如,可以将TFS_DefaultCollection重命名为TFS_DefaultCollection_Old。
步骤 3:还原 Azure DevOps 数据库
可以使用 Azure DevOps Server 管理控制台中的还原向导还原 Azure DevOps Server 的数据。 还原向导还会还原用于报告的加密密钥。
还原数据库
打开 Azure DevOps Server 的管理控制台,导航到 “计划备份”,然后启动 “还原数据库 ”向导。
指定备份集的路径,然后选择要用于还原的集。
完成向导并还原数据库。
步骤 4:更新所有服务帐户
必须更新 Azure DevOps Server(TFSService)的服务帐户和数据源帐户(TFSReports)。 即使这些帐户未更改,也必须更新信息,以确保帐户的标识和格式合适。
更新服务帐户
在运行 SQL Server Reporting Services 的服务器上,打开 计算机管理,如果尚未启动这些组件,请启动以下组件:
- ReportServer 或 ReportServer$InstanceName (应用程序池)
- SQL Server Reporting Services (TFSINSTANCE)
在应用程序层服务器上,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。
在命令提示符处,输入以下命令以添加 Azure DevOps 的服务帐户,其中 DatabaseName 是配置数据库的名称(默认情况下,TFS_Configuration):
TfsConfig 帐户 /add /AccountType:ApplicationTier /account: AccountName
有关详细信息,请参阅 “帐户”命令。
如果部署使用这些资源,请使用 Accounts 命令为报表服务器添加数据源帐户和 Azure DevOps 代理服务器的代理帐户。
步骤 5:重新生成数据仓库
可以重新生成数据仓库,而不是还原TFS_Warehouse和TFS_Analysis数据库。 如果部署包含大量数据,可能需要大量时间重新生成仓库。 但是,此策略有助于确保所有数据都正确同步。 重新生成仓库时,Azure DevOps Server 会创建一个实例,然后必须使用操作存储中的数据对其进行填充。
注意
如果在上一部分中还原了TFS_Warehouse和TFS_Analysis数据库,则无需执行以下过程。
重新生成仓库
在运行 Azure DevOps 应用程序层服务的服务器上,打开命令提示符窗口,并将目录
Drive:\\%programfiles%\\Azure DevOps Server 2019\\Tools
更改为 。输入以下命令:
TFSConfig rebuildwarehouse /all /ReportingDataSourcePassword: Password
其中 ,密码 是 Reporting Services 的数据源帐户(TFSReports)的密码。
等待命令完成。
在报表服务器上,打开 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 服务。
选择 GetProcessingStatus,然后选择“ 调用”。
重要
服务应返回所有作业的 “空闲” 值,该值指示未处理多维数据集。 如果返回其他值,请重复此步骤,直到 为所有作业返回 Idle 。
在 WarehouseControlWebService 页上,选择 ProcessAnalysisDatabase,然后选择“ 调用”。
此时会打开浏览器窗口。 当服务成功开始处理多维数据集时返回 True;如果未成功,则返回 False;如果多维数据集当前正在处理,则返回 False。
若要确定多维数据集的处理时间,请返回到 WarehouseControlWebService 页,选择 GetProcessingStatus,然后选择“ 调用”。
当 GetProcessingStatus 服务返回所有作业的空闲值时,处理将完成。
在 Azure DevOps 的应用程序层服务器上,打开 计算机管理,并启动 Visual Studio Team Foundation 后台作业服务。
步骤 6:清除应用程序层服务器上的数据缓存
部署 Azure DevOps 中的每个应用程序层服务器都使用文件缓存,以便用户可以从数据层服务器快速下载文件。 还原部署时,应在每个应用程序层服务器上清除此缓存。 否则,当用户从版本控制下载文件时,不匹配的文件 ID 可能会导致问题。 如果部署使用 Azure DevOps 代理服务器,则还必须清除配置为代理的每个服务器上的数据缓存。
注意
通过清除数据缓存,有助于防止在版本控制中下载不正确的文件版本。 除非在还原过程中替换部署中的所有硬件,否则应定期执行此操作。 如果要替换所有硬件,可以跳过此过程。
清除数据缓存
在运行 Azure DevOps 的应用程序层服务或使用 Azure DevOps 代理服务器配置的服务器上,打开命令提示符窗口并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Application Tier\Web Services\_tfs_data。
删除_tfs_data目录中的所有内容。
对部署中运行 Azure DevOps 代理服务器的每个应用程序层服务器和每台服务器重复这些步骤。
步骤 7:重启服务
还原数据后,必须重启服务才能将服务器返回到操作状态。
重新启动服务
在运行 Azure DevOps 应用程序层服务的服务器上,打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\Azure DevOps Server 2019\Tools。
输入以下命令:
TFSServiceControl unquiesce
有关详细信息,请参阅 TFSServiceControl 命令。
步骤 8:刷新客户端计算机上的缓存
刷新缓存以跟踪客户端计算机上的工作项
在新服务器上,打开 Internet Explorer。
在地址栏中,输入以下地址以连接到 ClientService Web 服务:
http://PublicURL/VirtualDirectory:8080/WorkItemTracking/v3.0/ClientService.asmx
注意
即使已使用管理凭据登录,也可能需要以管理员身份启动 Internet Explorer,并且系统可能会提示输入凭据。
选择 StampWorkitemCache,然后选择“ 调用”。 StampWorkitemCache 方法不返回任何数据。
刷新客户端计算机上的版本控制缓存
在客户端计算机上,打开具有管理权限的命令提示符窗口,并将目录
Drive:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE
更改为 。在命令提示符处,输入以下命令,包括集合的 URL,其中包括服务器名称和新服务器的端口号:
tf workspaces /collection:http://ServerName:Port/VirtualDirectoryName/CollectionName
在示例部署中,开发人员需要刷新作为 DefaultCollection 集合成员的项目的版本控制缓存,该集合托管在 Azure DevOps Server 的 FabrikamPrime 部署中:
tf workspaces /collection:http://FabrikamPrime:8080/tfs/DefaultCollection
有关详细信息,请参阅 Workspaces 命令。