自动化/编写脚本TFS数据库刷新

时间:2016-02-15 14:39:57

标签: sql-server tfs

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

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

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

我的问题:这种自动风格的TFS备份和还原是否可行,并且有任何机会在那里支持开箱即用的产品吗?

3 个答案:

答案 0 :(得分:0)

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

ALTER   DATABASE TFS_POC
SET     RESTRICTED_USER
WITH    ROLLBACK IMMEDIATE
GO

答案 1 :(得分:0)

无论是使用TFSBackup.exe还是在预定备份中使用还原数据库,都无法实现TFS还原的全自动样式,因此需要选择数据库备份。此外,停止服务是必要的,因为停止服务有助于防止在恢复过程中数据丢失或损坏。

答案 2 :(得分:0)

就此问题提供一些反馈。 在我们的情况下,要求相当简单,因为我们只希望恢复版本控制数据库。 这简化了一些事情,因为恢复功能(如报告,构建,共享点等)被排除在范围之外。

最后,我通过使用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的数据库恢复过程。

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

  5. TfsConfig PrepareClone
  6. TfsConfig ChangeServerID
  7. TfsConfig RemapDBs
  8. TfsConfig Accounts / ResetOwner
  9. TfsConfig Accounts / add
  10. TfsConfig registerDB
  11. TfsConfig ConfigureMail
  12. TfsConfig RebuildWarehouse
  13. 清除缓存

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

      现在可以请求或安排还原。有点原始,但到目前为止它工作正常。