2016-02-15 52 views
1

我正在嘗試定期刷新TFS 2015測試環境。 TFS生產環境由3個服務器組成,測試環境具有完全相同的佈局(單獨的App,Build和SQL服務器 - 不涉及共享點)。自動化/腳本編寫TFS數據庫刷新

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

眼看刷新會經常發生,並最大限度地減少停機時間,我想自動化/編寫要在夜間執行的過程。 從SQL Server獲得生產備份似乎沒有問題,因爲這可以從TFS管理控制檯(預定備份)中進行安排。 在這個階段,我試圖弄清楚「預定恢復」是如何工作的。在任何時候,我撞我的頭靠在試圖停止所有集合之前在測試環境中恢復開始...

我的問題:這樣的自動 TFS備份的風格和恢復可行的,並且是有沒有什麼機會支持這種開箱即用的產品?

+0

我也對這個確切的場景感興趣 –

回答

0

您可以爲每個MSSQL數據庫設置自動刷新。我會使用SQLAgent任務來完成它。恢復命令應與下面的語句前面,以確保所有連接被終止,否則恢復將失敗:

ALTER DATABASE TFS_POC 
SET  RESTRICTED_USER 
WITH ROLLBACK IMMEDIATE 
GO 
+0

謝謝你的建議Maaykel。這將處理數據庫恢復。然而,未知數是在處理數據庫之前需要將應用程序服務器關閉等所需的腳本/自動化操作: - ) –

0

沒有辦法有TFS總自動化風格恢復,您使用的TFSBackup.exe不管,或使用「計劃備份中的還原數據庫」,則需要選擇您的數據庫備份。此外,停止服務是必要的,因爲停止服務有助於防止數據在恢復過程中丟失或損壞。

0

對此問題提供一點反饋意見。 從我們只想恢復版本控制數據庫的角度來看,我們的要求相當簡單。 這個簡化的東西有點像恢復功能,比如報告,構建,共享點等等,都被忽略了。

最後,通過使用SQL Server存儲過程,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. 下一步,我們將執行測試環境的SQL Server上的一些存儲過程將啓動DB恢復的測試環境的TFS數據庫的過程。

  3. 接下來的步驟將準備Tfs數據庫在測試環境中運行,除其他外,清除嵌入在其中的生產值。 這是通過PowerShell腳本完成的,本質上它只是調用手動還原完成時將運行的命令。大多數命令駐留在TfsConfig命令中。 https://www.visualstudio.com/en-us/docs/setup-admin/tfs/commandline/tfsconfig-cmd

  • TfsConfig PrepareClone
  • TfsConfig ChangeServerID
  • TfsConfig RemapDBs
  • TfsConfig賬戶/ ResetOwner
  • TfsConfig賬戶/加
  • TfsConfig registerDB
  • TfsConfig ConfigureMail
  • TfsConfig RebuildWarehouse
  • 清除緩存

  • 在這些步驟之後完成的測試環境的TFS集合開始。 這是通過使用TfsServiceControl.exe完成 - https://www.visualstudio.com/en-us/docs/setup-admin/tfs/command-line/tfsservicecontrol-cmd
  • 現在可以要求或安排恢復。有點原始,但到目前爲止它工作正常。