将数据还原到当前服务器以外的其他服务器

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

备注

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

备注

有关将数据还原到不同服务器 Azure DevOps Server 的介绍,请参阅备份和还原

在 TFS 2017 后弃用 SharePoint 与 Azure DevOps Server 的集成。

先决条件

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

  • 服务器上的 " Administrators " 安全组的成员,运行 Azure DevOps 的管理控制台。
  • SQL Server 系统管理员 安全组的成员,SQL Server 或者必须在将承载数据库的 SQL Server 实例上将 "执行备份" 和 "创建维护计划" 权限设置为 "允许"。
  • 数据库的 sysadmin 安全组的成员,用于 Azure DevOps 和 Analysis Services 数据库。
  • TFS 仓库数据库的授权用户 _ 。
  • 如果部署使用 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 仓库和 tfs 分析数据库。 你不能只重新生成仓库,因为你可以在还原到相同的服务器或实例时进行重建。 您还必须备份 SharePoint 产品的数据库以将其移至要将数据库还原到的服务器或实例 Azure DevOps。 这些数据库包含 SharePoint 产品的管理数据库 (SharePoint _ AdminContent _ ID) 和内容和配置数据库。

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

若要还原 Azure DevOps 的数据,请在要将数据库移动到的计算机上安装 SQL Server Azure DevOps 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 的应用层服务的服务器上,打开命令提示符窗口,并将目录更改为 驱动器: \ % programfiles% \ Azure DevOps Server 2019 \ 工具。

  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 _ 配置-此数据库名称可能包含 TFS _配置 之间的其他字符。
  • TFS _ CollectionName -每个项目集合都有自己的数据库。 例如,如果有五个项目集合,则将有5个数据库,每个数据库都由项目集合的名称识别。 这些数据库可以位于 SQL Server 的同一实例上,也可以位于单独的实例上,也可以位于单独的物理服务器上。 必须备份每个数据库,然后还原每个数据库。
  • TFS _ 仓库-此数据库名称可能包含 _ TFS仓库 之间的其他字符

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

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

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

  • SharePoint 产品的内容数据库 (WSS _ 内容) -包含 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 服务器集成,并且需要将数据库还原到其他服务器:

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

  • TFS _ 分析

有关这些数据库的详细信息,请参阅了解备份 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 Products (WSS Content) 的内容数据库后,必须将运行 SharePoint Products 的服务器 _ 重定向到该数据库的新位置。 此数据库必须可正常运行,然后才能Azure DevOps Server数据库的新位置进行重新配置。

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

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

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

步骤 6:更改数据库中的Reporting Services 配置管理器

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

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

若要重定向Reporting Services连接到新服务器:

步骤 7:准备SQL Server

在还原的数据库正常工作之前,必须使用 TFSConfig PrepSQL 命令准备SQL Server托管数据库以用于Azure DevOps Server。 此命令在新的服务器或实例上创建 TFSEXECROLE 和 TFSADMINROLE 组,并添加操作所需的系统消息。

备注

如果无法访问适用于 Azure DevOps Server 的命令行工具,则可以通过安装 Azure DevOps Server。 将其安装在将成为应用程序层服务器的计算机上,但取消安装软件后出现的配置向导。

若要准备SQL Server托管数据库,请Azure DevOps Server:

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

  2. 输入以下命令,其中 ServerName 是承载 SQL Server 数据库的 Azure DevOps Server 实例的名称,采用 ServerNameServerName \ InstanceName 格式:

    TFSConfig PrepSQL /SQLInstance:ServerName

  3. 对将数据库还原到每个新服务器或实例重复此步骤,Azure DevOps Server。

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

使用 TFSConfig Accounts ResetOwner 命令将还原的数据库的数据库所有者登录名更改为当前用户。 执行下一系列步骤之前,请确保使用适当的用户帐户登录。 例如,可以使用安装了 Azure DevOps Server的帐户,称为 TFSSETUP。 该帐户至少必须是 Azure DevOps 管理员组的成员Azure DevOps Server以及SQL Server 中的 sysadmin 组的成员。

若要将还原的数据库的所有权更改为当前用户,请执行以下操作:

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

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

    TFSConfig Accounts /ResetOwner /SQLInstance: ServerName /DatabaseName:DatabaseName

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

步骤 9:Azure DevOps Server远程集合数据库

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

必须将Azure DevOps Server数据库重定向到在配置数据库的单独服务器或服务器上托管的任何集合数据库。 此外,如果使用命名实例,或者 TFS 分析或 TFS 仓库数据库托管在 TFS 配置之外的不同服务器上,则必须运行 RemapDBs _ _ _ 命令。

若要将Azure DevOps Server远程数据库,

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

  2. 输入以下命令,其中 ServerName 是承载 Azure DevOps Server 配置数据库的 SQL Server 实例的名称 ,TFS _ 配置 是 Azure DevOps Server 的已还原配置数据库的名称 ,ServerName2 是承载远程集合的服务器的名称。 可以具有与在部署中配置的服务器数量一样多的 ServerName 参数。 可以使用 ServerName 或 ServerName \ InstanceName 格式指定 ServerName。 如果不使用默认实例,则必须指定实例名称:

    TFSConfig RemapDBs /DatabaseName: ServerName; TFS _ 配置 /SQLInstances: ServerName,ServerName2 /AnalysisInstance: ServerName2 /AnalysisDatabaseName: DatabaseName

    备注

    /SQLInstances 中,必须指定承载数据库的所有实例(以逗号SQL Server为数据库Azure DevOps Server。 有关详细信息,请参阅 RemapDBs 命令

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

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

备注

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

更新服务帐户:

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

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

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

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

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

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

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

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

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

备注

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

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

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

  2. 在命令提示符下输入以下命令,其中 DatabaseName 是配置数据库的名称 (,TFS _ 配置) :

    TfsConfig registerDB /SQLInstance: ServerName /DatabaseName: DatabaseName

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

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

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

备注

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

重新配置报告和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. " 数据库"中,输入Analysis Services数据库的名称Azure DevOps Server。

    默认情况下,此数据库的名称为 TFS _ 分析。

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

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

  14. 在 **"**用户名和密码" 中,输入帐户名和 (密码,) 数据源帐户 (TFSReports) 。

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

  16. 在 **"**用户名和密码" 中,输入帐户名和 (密码,) 数据源帐户 (TFSReports) 。

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

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

  19. 打开命令提示符窗口,将目录更改为"驱动器: \ %programfiles% \ Azure DevOps Server 2019 \ 工具"。

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

    TFSConfig RebuildWarehouse /AnalysisServices /ReportingDataSourcePassword: Password

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

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

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

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

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

    "WarehouseControlWebService" 页随即打开。

    备注

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

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

    重要

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

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

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

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

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

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

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

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

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

备注

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

清除数据缓存:

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

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

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

步骤 14:重启服务

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

若要重新启动使用Azure DevOps Server服务:

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

  2. 输入以下命令:

    TFSServiceControl unquiesce
    

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

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

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