[TFS] TFS 2010 備份 Team Foundation Server (TFS 2010 Backup Team Foundation Server)

本文將分別呈現 [MSDN] 與 [Power Tools] 兩者運作方式,並探討彼此間作業事項,相信會讓您更了解 TFS 2010 的備份原理~~

人是視覺性的動物,文字是比不上圖文來的便於了解,本文是為了個人備忘使用的,相信能幫助到一些跟我一樣健忘的人~~

 

本文將分別呈現 [MSDN] 與 [Power Tools] 兩者運作方式,並探討彼此間作業事項,相信會讓您更了解 TFS 2010 的備份原理~~

 

文章標題索引

備份方式有何差異?

備份那些資料庫呢?

安裝 Power Tools

建立一個備份計劃

備份計劃做了些什麼呢?

手動觸發備份

 

示範環境:TFS 2010 Single Server in Win2008R2+SQL2008R2+TFS2010。

 

※ 詳細設定內容請至微軟 MSDN 管理 TFS 文件庫 網站了解。

※ 參考資源: My ALM Blog

 

P.S. 若您想了解更多 TFS 資訊,請參考『Team Foundation Server 指南』。

 

備份方式有何差異?

下表中列示了兩者之差異。

 

作業事項

MSDN

Power Tools

備份路徑

磁碟或磁帶

網路路徑

備份 Reporting Services 加密金鑰

Reporting Services 組態管理員

Backup Plan Wizard

標示交易

Tbl_TransactionLogMark

tbl_TfsTransactionLogMark

標示交易時使用

sp_SetTransactionLogMark

prc_TfsSetTransactionLogMark

執行標示交易方式

sp_SetTransactionLogMarkAll

TfsConfigPT.exe

執行標示程序

資料庫維護計畫

TfsConfigPT.exe

排程控制方式

資料庫維護計畫 (SQL Job)

工作排程器 (OS Job)

 

備份那些資料庫呢?

名稱

標示交易?

用途

Tfs_Configuration

V

Team Foundation Server 的組態資料庫包含部署的目錄、伺服器名稱和組態資料。

Tfs_Warehouse

V

倉儲資料庫包含的資料可用來建置 Reporting Services 所使用的倉儲。

TFS_CollectionName

V

Team 專案集合的資料庫包含該集合中 Team 專案的所有資料。

TFS_Analysis

 

Team Foundation Server 部署的資料來源和 Cube。

ReportServer

V

Team Foundation Server 部署的報表和報表設定。

ReportServerTempDb

V

暫時存放執行特定報表時的資訊。

WSS_Config

 

SharePoint 產品的組態資料庫包含所有網站的清單。

WSS_Content

 

SharePoint 產品的內容資料庫包含 Team 專案入口網站的實際內容。

WSS_AdminContent

 

SharePoint 產品的系統管理資料庫包含使用者、角色和資料庫的安全性資訊。

VirtualManagerDB

V

SCVMM 系統管理員主控台中所檢視的資訊。

※ 標示交易欄位 [勾選] 即代表須進行相關對應處理。

 

安裝 Power Tools

一、下載最新版本 (筆者使用 10.0.40301.0),並可得知本次版本異動項目如下:

■ NEW – Team Foundation Server Backups

■ Updated – Microsoft Team Foundation Server 2010 Best Practices Analyzer

■ Updated – Team Explorer Enhancements

■ Updated – Team Foundation Power Tool (TFPT.EXE)

01-01

二、執行安裝檔 (tfpt.msi) --> 按 [執行]

01-02

三、按 [Next]

01-03

四、選擇 [I accept the terms in the license agreement] --> 按 [Next]

01-04

五、選擇 [Custom] --> 按 [Next]

01-05

六、檢查您的 [Tfs Backup Plan] 項目是否與下圖相符 --> 按 [Next]

01-06

七、按 [Install]

01-07

八、安裝過程中,會在這個作業較久的時間,請費心等待~~

01-08

九、安裝完成,按 [Finish]

01-09

 

建立一個備份計劃

一、開始 --> 所有程式 --> Microsoft Team Foundation Server 2010 --> Team Foundation 管理主控台 --> TFS2010 --> Team Foundation Backups --> 按右邊視窗中的 [Create Backup Plan]

02-01

二、進行 Backup Plan Wizard,按 [下一步]

02-02

三、開啟 [檔案總管] --> 將目錄位置移至 [C:\] --> 新增一個目錄夾名稱為 [TFS2010_Backup] --> 按滑鼠右鍵,移至 [共用對象] --> 按 [進階共用]

02-03

四、按 [進階共用]

02-04

五、按 [權限]

02-05

六、新增 [Administrator] 使用者,並賦予 [完全控制] 權限 --> 按 [確定]

02-06

七、於下圖中得知,已開啟共用,其路徑為 [\\TFS2010\TFS2010_Backup]

02-07

八、設定備份路徑:

回到 Backup Plan Wizard,於 [Network Backup Path] 中填入 [\\TFS2010\TFS2010_Backup] --> 按 [下一步]

02-08

九、備份 Reporting Services 加密金鑰:

於 [Encryption Key Password] 與 [Confirm Password] 中填入相同的密碼 --> 按 [下一步]

02-09

十、按 [下一步]

02-10

十一、 選擇 [Use a user account] --> 於 [Account Name] 中填入 [Administrator] --> 於 [Password] 中填入該帳號之密碼按 --> 按 [下一步]

02-11

十二、 選擇 [No email alerts] --> 按 [下一步]

02-12

十三、 選擇 [Full, Differential, and Transactional Schedule] --> 按 [下一步]

● Nightly Full Schedule:每天晚上完整備份。

● Full, Differential, and Transactional Schedule:依需求進行完整、差異與交易記錄備份。

● Manual Backup Only:手動完整備份。

02-13

十四、 檢視計劃項目,若無問題按 [Verify]

02-14

十五、 若與下圖箱符,即代表 [通過整備檢查],請按 [Create Plan]

※ 若您發生了 TF254027 錯誤,請參考『使用 Power Tools 建立備份計劃時發生 TF254027 錯誤』文章。

02-15

十六、 建立備份計劃完成,按 [下一步]

02-16

十七、 備份計劃精靈作業成功,按 [Close]

02-17

十八、 回到 Team Foundation Backups 會看到如下圖的結果

02-18

十九、 至 [C:\ TFS2010_Backup] 目錄位置,會看到兩個檔案:

● ConfigPT.xml:建立出來的備份計劃設定檔。

● RSKey_XXX.snk:Reporting Services 加密金鑰。

02-19

 

備份計劃做了些什麼呢?

一、建立資料表來標示相關交易

---------- MDSN ----------

   1:  Create Table Tbl_TransactionLogMark
   2:  (
   3:  logmark int
   4:  )
   5:  GO
   6:   
   7:  Insert into Tbl_TransactionLogMark (logmark) Values (1)
   8:  GO

 

---------- Power Tools ----------

   1:  if (not exists(select * from sys.tables where name = 'tbl_TfsTransactionLogMark'))
   2:  begin
   3:      Create Table tbl_TfsTransactionLogMark
   4:      (
   5:          logmark tinyint
   6:      )
   7:      Insert into tbl_TfsTransactionLogMark (logmark) Values (1)
   8:  end

 

二、建立預存程序,提供標示交易時使用

---------- MDSN ----------

   1:  Create PROCEDURE sp_SetTransactionLogMark
   2:  @name nvarchar (128)
   3:  AS
   4:  BEGIN TRANSACTION @name WITH MARK
   5:  UPDATE TFS_Configuration.dbo.Tbl_TransactionLogMark SET logmark = 1
   6:  COMMIT TRANSACTION
   7:  GO

 

---------- Power Tools ----------

   1:  if ((not exists(select * from sys.procedures where name = 'prc_TfsSetTransactionLogMark')))
   2:  begin
   3:      declare @text as varchar(8000)
   4:      select @text='Create PROCEDURE prc_TfsSetTransactionLogMark
   5:      @name nvarchar (128)
   6:      AS
   7:      BEGIN TRANSACTION @name WITH MARK
   8:      UPDATE dbo.Tbl_TfsTransactionLogMark SET logmark = 1;
   9:      COMMIT TRANSACTION
  10:      GO'
  11:      execute (@text)
  12:  end

 

三、執行標示交易方式

---------- MDSN ----------

※ 將以下預存程序放置於 TFS_Configuration 中

   1:  CREATE PROCEDURE sp_SetTransactionLogMarkAll
   2:  @name nvarchar (128)
   3:  AS
   4:  BEGIN TRANSACTION
   5:  EXEC [ServerName].TFS_Configuration.dbo.sp_SetTransactionLogMark @name
   6:  EXEC [ServerName].ReportServer.dbo.sp_SetTransactionLogMark @name
   7:  EXEC [ServerName].ReportServerTempDB.dbo.sp_SetTransactionLogMark @name
   8:  EXEC [ServerName].TFS_CollectionName1.dbo.sp_SetTransactionLogMark @name
   9:  EXEC [ServerName].TFS_CollectionName2.dbo.sp_SetTransactionLogMark @name
  10:  EXEC [ServerName].TFS_CollectionName3.dbo.sp_SetTransactionLogMark @name
  11:  EXEC [ServerName].TFS_CollectionName4.dbo.sp_SetTransactionLogMark @name
  12:  EXEC [ServerName].TFS_Warehouse.dbo.sp_SetTransactionLogMark @name
  13:  EXEC [ServerName].VirtualManagerDB.dbo.sp_SetTransactionLogMark @name
  14:  COMMIT TRANSACTION
  15:  GO

 

---------- Power Tools ----------

運行 TfsConfigPT.exe 執行檔時,會依 ConfigPT.xml 設定檔進行處理

03-01

※ TfsConfigPT.exe 檔案位置:

C:\Program Files (x86)\Microsoft Team Foundation Server 2010 Power Tools\Team Foundation Server Backup Plan

03-02

四、執行標示程序

---------- MDSN ----------

[資料庫維護計畫] 運行時,會至 TFS_Configuration 中執行以下語法:

EXEC sp_SetTransactionLogMarkAll 'TFSMark'

 

---------- Power Tools ----------

運行 TfsConfigPT.exe 執行檔時,會執行以下語法:

   1:  begin
   2:      declare @text as varchar(8000)
   3:      select @text='exec prc_TfsSetTransactionLogMark TfsMarkTfpt'
   4:      execute (@text)
   5:  end

 

五、排程控制方式

---------- MDSN ----------

於 [資料庫維護計畫] 中進行控制:

完整備份的計畫命名為 TfsFullDataBackup。

差異備份的計畫命名為 TfsDifferentialBackup。

交易記錄備份的計畫命名為 TfsTransactionLogBackup。

 

---------- Power Tools ----------

於 [工作排程器] 中進行控制

03-03

 

手動觸發備份

若您有特殊需求,Power Tools 亦提供了可手動觸發備份方式,以下為 Power Tools 備份時所下達的 SQL 語法:

P.S. 不同的環境,將會對應不同的設定,下表為本文的設定。

備份項目

語法

Database

BACKUP DATABASE [Tfs_Configuration] TO  DISK = N'\\TFS2010\TFS2010_Backup\Tfs_Configuration_20110727094635F.bak' WITH  DESCRIPTION = N'Tfs_Configuration database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'Tfs_Configuration database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP DATABASE [Tfs_TestCollection] TO  DISK = N'\\TFS2010\TFS2010_Backup\Tfs_TestCollection_20110727094635F.bak' WITH  DESCRIPTION = N'Tfs_TestCollection database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'Tfs_TestCollection database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP DATABASE [Tfs_DefaultCollection] TO  DISK = N'\\TFS2010\TFS2010_Backup\Tfs_DefaultCollection_20110727094635F.bak' WITH  DESCRIPTION = N'Tfs_DefaultCollection database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'Tfs_DefaultCollection database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP DATABASE [Tfs_Warehouse] TO  DISK = N'\\TFS2010\TFS2010_Backup\Tfs_Warehouse_20110727094635F.bak' WITH  DESCRIPTION = N'Tfs_Warehouse database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'Tfs_Warehouse database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP DATABASE [ReportServer] TO  DISK = N'\\TFS2010\TFS2010_Backup\ReportServer_20110727094635F.bak' WITH  DESCRIPTION = N'ReportServer database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'ReportServer database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP DATABASE [ReportServerTempDb] TO  DISK = N'\\TFS2010\TFS2010_Backup\ReportServerTempDb_20110727094635F.bak' WITH  DESCRIPTION = N'ReportServerTempDb database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'ReportServerTempDb database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP DATABASE [WSS_Config] TO  DISK = N'\\TFS2010\TFS2010_Backup\WSS_Config_20110727094635F.bak' WITH  DESCRIPTION = N'WSS_Config database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'WSS_Config database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP DATABASE [WSS_AdminContent] TO  DISK = N'\\TFS2010\TFS2010_Backup\WSS_AdminContent_20110727094635F.bak' WITH  DESCRIPTION = N'WSS_AdminContent database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'WSS_AdminContent database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP DATABASE [WSS_Content] TO  DISK = N'\\TFS2010\TFS2010_Backup\WSS_Content_20110727094635F.bak' WITH  DESCRIPTION = N'WSS_Content database - Full Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'WSS_Content database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10

Log

BACKUP LOG [Tfs_Configuration] TO  DISK = N'\\TFS2010\TFS2010_Backup\Tfs_Configuration_20110727094647L.trn' WITH  DESCRIPTION = N'Tfs_Configuration database - Log Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'Tfs_Configuration database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP LOG [Tfs_TestCollection] TO  DISK = N'\\TFS2010\TFS2010_Backup\Tfs_TestCollection_20110727094647L.trn' WITH  DESCRIPTION = N'Tfs_TestCollection database - Log Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'Tfs_TestCollection database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP LOG [Tfs_DefaultCollection] TO  DISK = N'\\TFS2010\TFS2010_Backup\Tfs_DefaultCollection_20110727094647L.trn' WITH  DESCRIPTION = N'Tfs_DefaultCollection database - Log Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'Tfs_DefaultCollection database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP LOG [Tfs_Warehouse] TO  DISK = N'\\TFS2010\TFS2010_Backup\Tfs_Warehouse_20110727094647L.trn' WITH  DESCRIPTION = N'Tfs_Warehouse database - Log Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'Tfs_Warehouse database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP LOG [ReportServer] TO  DISK = N'\\TFS2010\TFS2010_Backup\ReportServer_20110727094647L.trn' WITH  DESCRIPTION = N'ReportServer database - Log Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'ReportServer database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10
BACKUP LOG [ReportServerTempDb] TO  DISK = N'\\TFS2010\TFS2010_Backup\ReportServerTempDb_20110727094647L.trn' WITH  DESCRIPTION = N'ReportServerTempDb database - Log Backup',  RETAINDAYS = 30, NOFORMAT, NOINIT,  NAME = N'ReportServerTempDb database Backup', NOSKIP, REWIND, NOUNLOAD,  STATS = 10

一、回到 Team Foundation Backups --> 按 [Take Full Backup Now]

04-01

二、進行備份作業中

04-02

三、備份完成,按 [關閉]

04-03

四、開啟 [檔案總管] --> 將目錄位置移至 [C:\TFS2010_Backup],此時您會看到方才的備份檔已全數放置於此

04-04

分享