【问题标题】:Automating / scripting TFS database refresh自动化/脚本化 TFS 数据库刷新
【发布时间】:2016-05-26 12:39:23
【问题描述】:

我正在尝试定期刷新 TFS 2015 测试环境。 TFS 生产环境由 3 台服务器组成,测试环境具有完全相同的布局(单独的 App、Build 和 SQL 服务器 - 不涉及共享点)。

TFS 版本:14.0.23128.0 (Tfs2015)
SQL Server 2012 SP2 CU-1
操作系统:Windows 2008 R2 企业版

看到刷新将定期发生并最大程度地减少停机时间,我想自动化/编写脚本以在晚上执行该过程。 从 SQL Server 获取生产备份似乎没有问题,因为这可以从 TFS 管理控制台(计划备份)中安排。 在这个阶段,我试图弄清楚“计划恢复”将如何工作。很快我就开始反对在测试环境开始恢复之前停止所有收集...

我的问题:这种 自动 风格的 TFS 备份和 恢复 是否可行,是否有开箱即用的产品支持此功能?

【问题讨论】:

  • 我也对这个确切的场景感兴趣

标签: sql-server tfs


【解决方案1】:

您可以为每个 MSSQL 数据库设置自动刷新。我会使用 SQLAgent 任务来完成。恢复命令前应加上以下语句,以确保终止所有连接,否则恢复将失败:

ALTER   DATABASE TFS_POC
SET     RESTRICTED_USER
WITH    ROLLBACK IMMEDIATE
GO

【讨论】:

  • 感谢您对 Maaykel 的建议。这将负责数据库恢复。然而,未知的是在干预数据库之前需要使应用程序服务器停机等的脚本/自动化操作:-)
【解决方案2】:

没有一种方法可以实现完全自动化的 TFS 恢复方式,无论您使用的是 TFSBackup.exe,还是使用计划备份中的恢复数据库,都需要选择您的数据库备份。此外,停止服务也是必要的,因为停止服务有助于在恢复过程中防止数据丢失或损坏。

【讨论】:

    【解决方案3】:

    就该问题提供一些反馈。 在我们的案例中,要求相当简单,因为我们只希望恢复版本控制数据库。 这稍微简化了一些事情,因为报告、构建、共享点等恢复功能不在范围之内。

    最后,通过使用 SQL 服务器存储过程、Powershell 和一些标准 Tfs 命令的组合,我确实成功地在一定程度上实现了流程自动化。

    第一步是备份生产 Tfs 数据库。 这是通过使用 SQL Server 存储采购来实现的。 注意:您必须将所有数据库备份到相同的时间戳,以帮助确保不会丢失数据! https://www.visualstudio.com/en-us/docs/setup-admin/tfs/admin/backup/backup-db-architecture

    然后将这些数据库备份复制到共享还原位置,测试环境的 Tfs SQL Server 可以在还原过程中访问它们。 这也是通过一些 SQL 存储过程完成的。 这些步骤在 SQL Server 中安排为每晚执行一次,每次都会覆盖共享位置中前一天的备份。

    对于所涉及的恢复操作的编排,使用了 TeamCity。 当请求恢复时,您可以通过 TeamCity 启动(或安排)它。

    1. 第一步是停止所有测试环境的 Tfs 收集。 这是通过使用 TfsServiceControl.exe - https://www.visualstudio.com/en-us/docs/setup-admin/tfs/command-line/tfsservicecontrol-cmd

    2. 完成的
    3. 接下来我们将在测试环境的 SQL Server 上执行一些存储过程,这将启动测试环境的 Tfs DB 的 DB 恢复过程。

    4. 接下来的步骤将准备 Tfs 数据库以在测试环境中运行,除其他外,清除其中嵌入的生产值。 这是由 PowerShell 脚本完成的,该脚本本质上只是调用将在手动恢复完成时运行的命令。大多数命令驻留在 TfsConfig 命令中。 https://www.visualstudio.com/en-us/docs/setup-admin/tfs/commandline/tfsconfig-cmd

  • TfsConfig PrepareClone
  • TfsConfig 更改服务器 ID
  • TfsConfig RemapDBs
  • TfsConfig 帐户 /ResetOwner
  • TfsConfig 帐户 /add
  • TfsConfig registerDB
  • TfsConfig 配置邮件
  • TfsConfig 重建仓库
  • 清除缓存

    1. 完成这些步骤后,测试环境的 Tfs 集合将启动。 这是通过使用 TfsServiceControl.exe - https://www.visualstudio.com/en-us/docs/setup-admin/tfs/command-line/tfsservicecontrol-cmd 完成的

    现在可以请求或安排恢复。有点原始,但到目前为止效果还不错。

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 1970-01-01
      • 2013-11-12
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      相关资源
      最近更新 更多