共用方式為


手動備份 Azure DevOps Server

Azure DevOps Server |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

您可以使用 SQL Server 所提供的工具,手動備份 Azure DevOps Server 的數據。 不過,如果您的部署具有防止使用這些工具的安全性限制,您可能需要手動設定備份。

若要手動備份 Azure DevOps,請備份部署使用的所有資料庫,並將備份同步處理至相同的時間點。 如果您使用標示的交易,您可以最有效地管理此同步處理。 如果您定期標記 Azure DevOps 所使用的每個資料庫中的相關交易,您可以在這些資料庫中建立一系列常見的恢復點。 如果您定期備份這些資料庫,您可以降低因設備故障或其他非預期事件而失去生產力或數據的風險。

警告

除非 Microsoft 支援指示您這麼做,或您正在遵循本文件中所述的程序,否則您不應該手動修改任何 Azure DevOps Server 資料庫。 任何其他修改都可能會使服務合約失效。

本文中的程序說明如何建立維護計劃,以執行資料庫的完整或增量備份,以及如何建立標示交易的數據表和預存程式。 為了獲得最大的數據保護,您應該排程每日或每周執行完整備份,並依每小時執行增量備份。 您也可以備份事務歷史記錄。 如需詳細資訊,請參閱 備份事務歷史記錄 (SQL Server)

備註

本文中的許多程式會指定使用 SQL Server Management Studio。 如果您已安裝 SQL Server Express Edition,則必須使用 SQL Server Management Studio Express。 如需詳細資訊,請參閱 下載 SQL Server Management Studio (SSMS)

先決條件

您必須是下列所有群組的成員:

  • 執行 Azure DevOps Server 管理控制台之伺服器上的 系統管理員 安全組。
  • SQL Server 系統管理員安全組。 或者,您的 SQL Server 執行備份和建立維護計劃 許可權必須設定為 允許 在每個您要備份資料庫的 SQL Server 實例上。 

備份 Reporting Services 加密金鑰

如果您的部署使用 SQL Server Reporting Services,您不僅必須備份資料庫,也必須備份加密密鑰。

針對 Azure DevOps Server 的單一伺服器部署,您可以使用兩種方式之一備份 SQL Server Reporting Services 的加密金鑰。 您可以使用 Reporting Services 組態工具,或使用 SQL Server 提供的 RSKEYMGMT 命令行工具。 針對多伺服器或叢集部署,您必須使用 RSKEYMGMT。 如需 RSKEYMGMT 的詳細資訊,請參閱 RSKEYMGMT 公用程式

如需如何備份加密金鑰的詳細資訊,請參閱 系統管理 (Reporting Services) 。 如需如何還原加密密鑰的詳細資訊,請參閱還原加密密鑰(Reporting Services 組態)。

先決條件

若要執行此程式,您必須是本機 系統管理員 群組的成員,該群組在 Reporting Services 中具有 內容管理員 的角色,或者您的 管理報表伺服器安全性 許可權必須設定為 [允許]。

備份加密金鑰

若要使用 Reporting Services 組態工具來備份加密金鑰:

  1. 在執行 Reporting Services 的伺服器上,選取 [ 開始]、指向 [ 所有程式]、指向 [Microsoft SQL Server]、[ 組態工具],然後選取 [Reporting Services 組態管理員]。

    [ 報表伺服器安裝實例選取] 對話框隨即開啟。

  2. 輸入資料層伺服器和資料庫實例的名稱,然後選取 [ 連接]。

  3. 在左側的導覽列中,選取 [ 加密密鑰],然後選取 [ 備份]。

    [ 加密金鑰資訊] 對話框隨即開啟。

  4. [檔案位置] 中,指定您要儲存此金鑰複本的位置。

    您應該考慮將此金鑰儲存在與執行 Reporting Services 的電腦不同的電腦上。

  5. [密碼] 中,輸入檔案的密碼。

  6. [確認密碼] 中,重新輸入檔案的密碼。

  7. 請選擇 [確定]

識別資料庫

開始之前,請先識別您需要備份的所有資料庫,才能完全還原部署。 這包括 SQL Server Reporting Services 的資料庫。 這些可能是在同一部伺服器上,或者您可能有資料庫分散到多部伺服器。 如需 Azure DevOps Server 資料庫的完整數據表和描述,包括資料庫的預設名稱,請參閱 瞭解 Azure DevOps Server 資料庫、部署拓撲和備份

識別資料庫

  1. 開啟 SQL Server Management Studio,並連線到資料庫引擎。

  2. SQL Server Management Studio 的 [物件總管] 中,展開伺服器的名稱,然後展開 [資料庫]。

  3. 檢閱資料庫清單,並識別部署所使用的資料庫清單。

    例如,Fabrikam, Inc.的 Azure DevOps Server 部署是單一伺服器組態,並使用下列資料庫:

    • 組態資料庫 (Tfs_Configuration)
    • 集合資料庫 (Tfs_DefaultCollection)
    • 資料倉儲的資料庫 (Tfs_Warehouse)
    • 報告資料庫 (ReportServer 和 ReportServerTempDB)

在資料庫中建立數據表

若要確定所有資料庫都還原到相同的點,您可以在每個資料庫中建立數據表來標記交易。 使用 SQL Server Management Studio 中的 Query 函式,在每個資料庫中建立適當的數據表。

  1. 開啟 SQL Server Management Studio,並連線到資料庫引擎。

  2. SQL Server Management Studio 中,反白顯示伺服器的名稱、開啟子功能表,然後選取 [ 新增查詢]。

    [資料庫引擎查詢編輯器] 視窗隨即開啟。

  3. 在 [查詢] 功能表上,選取 [SQLCMD 模式]。

    查詢編輯器會在查詢編輯器的內容中執行 sqlcmd 語句。 如果 [查詢] 功能表未出現,請在 [ Database Engine 查詢編輯器 ] 視窗中選取新查詢中的任何位置。

  4. [SQL 編輯器] 工具列上,開啟 [ 可用的資料庫] 列表,然後選取 [TFS_Configuration]。

    備註

    TFS_Configuration是組態資料庫的預設名稱。 此名稱是可自定義的,而且可能會有所不同。

  5. 在查詢視窗中,輸入下列腳本,以在組態資料庫中建立資料表:

        Use Tfs_Configuration
    Create Table Tbl_TransactionLogMark
    (
    logmark int
    )
    GO
    Insert into Tbl_TransactionLogMark (logmark) Values (1)
    GO
    
  6. F5 執行腳本。

    如果腳本正確,查詢編輯器中會出現訊息 “(1 列/秒)。”。

  7. (選擇性)儲存腳本。

  8. 針對 Azure DevOps Server 部署中的每個資料庫重複步驟 4\7。 在 Fabrikam, Inc. 部署範例中,您會針對下列所有資料庫重複此程式:

    • Tfs_Warehouse
    • Tfs_DefaultCollection
    • 報告伺服器
    • ReportServerTempDB

建立標記數據表的預存程式

在您要備份的每個資料庫中建立資料表之後,您必須建立標記資料表的程式。

  1. SQL Server Management Studio 中,開啟查詢視窗,並確定已開啟 SQLCMD 模式

  2. [SQL 編輯器] 工具列上,開啟 [ 可用的資料庫] 列表,然後選取 [TFS_Configuration]。

  3. 在查詢視窗中,輸入下列腳本來建立預存程式來標記組態資料庫中的交易:

        Create PROCEDURE sp_SetTransactionLogMark
    @name nvarchar (128)
    AS
    BEGIN TRANSACTION @name WITH MARK
    UPDATE Tfs_Configuration.dbo.Tbl_TransactionLogMark SET logmark = 1
    COMMIT TRANSACTION
    GO
    
  4. F5 執行程式。

    如果程序正確,[命令][已成功完成] 訊息會出現在 [查詢編輯器] 中。

  5. (選擇性)儲存程序。

  6. 針對每個 Azure DevOps Server 資料庫重複步驟 2\5。  在 Fabrikam, Inc. 部署中,您會針對下列所有資料庫重複此程式:

    • Tfs_Warehouse
    • Tfs_DefaultCollection
    • 報告伺服器
    • ReportServerTempDB

    小提示

    建立程式之前,請從 [物件總管] 中的 [可用資料庫 ] 列表中選取相關聯的資料庫名稱。 否則,當您執行腳本時,您會看到預存程式已經存在的錯誤訊息。

建立預存程式以一次標記所有數據表

若要確定已標記所有資料庫,您可以建立程式,以接著執行您剛才建立以標記數據表的所有程式。 與先前的程式不同,此程式只會在組態資料庫中執行。

  1. SQL Server Management Studio 中,開啟查詢視窗,並確定已開啟 SQLCMD 模式

  2. [SQL 編輯器] 工具列上,開啟 [ 可用的資料庫] 列表,然後選取 [TFS_Configuration]。

  3. 在查詢視窗中,建立預存程式,以執行您在 Azure DevOps Server 所使用的每個資料庫中建立的預存程式。 將 ServerName 取代為執行 SQL Server 的伺服器名稱,並以每個專案集合的資料庫名稱取代 Tfs_CollectionName

    在範例部署中,伺服器的名稱是 FABRIKAMPRIME,且部署中只有一個專案集合,這是在安裝 Azure DevOps Server (DefaultCollection) 時建立的默認專案集合。 有鑑於此,您將會建立下列腳本:

        CREATE PROCEDURE sp_SetTransactionLogMarkAll
    @name nvarchar (128)
    AS
    BEGIN TRANSACTION
    EXEC [FABRIKAMPRIME].Tfs_Configuration.dbo.sp_SetTransactionLogMark @name
    EXEC [FABRIKAMPRIME].ReportServer.dbo.sp_SetTransactionLogMark @name
    EXEC [FABRIKAMPRIME].ReportServerTempDB.dbo.sp_SetTransactionLogMark @name
    EXEC [FABRIKAMPRIME].Tfs_DefaultCollection.dbo.sp_SetTransactionLogMark @name
    EXEC [FABRIKAMPRIME].Tfs_Warehouse.dbo.sp_SetTransactionLogMark @name
    COMMIT TRANSACTION
    GO
    
  4. F5 執行程式。

    備註

    如果您因為建立標記交易的預存程式而未重新啟動 SQL Server Management Studio,則一或多個紅色波浪線可能會強調伺服器的名稱和資料庫的名稱。 不過,程序仍應執行。

    如果程序正確,[命令][已成功完成] 訊息會出現在 [查詢編輯器] 中。

  5. (選擇性)儲存程序。

建立預存程式以自動標記數據表

在您擁有將執行所有預存程式進行資料表標記的程序之後,您可以建立一個程式,以使用相同的交易標記來標記所有數據表。 您將使用此標記將所有資料庫還原至相同的點。

  1. SQL Server Management Studio 中,開啟查詢視窗,並確定已開啟 SQLCMD 模式

  2. [SQL 編輯器] 工具列上,開啟 [ 可用的資料庫] 列表,然後選取 [TFS_Configuration]。

  3. 在查詢視窗中,輸入下列腳本,以使用 『TFSMark』 標記數據表:

    EXEC sp_SetTransactionLogMarkAll 'TFSMark'
    GO
    

    備註

    TFSMark 是標記的範例。 您可以在標記中使用任何支援的字母和數位序列。 如果您在資料庫中有多個標示的數據表,請記錄您將用來還原資料庫的標記。 如需詳細資訊,請參閱 使用標示的交易

  4. F5 執行程式。

    如果程序正確,查詢編輯器中會顯示訊息 "(影響 1 行)"。 WITH MARK 選項僅適用於每個已標記資料表的第一個 "BEGIN TRAN WITH MARK" 指令。

  5. 儲存程序。

建立排定的作業以執行資料表標記程序

既然您已建立並儲存所有這些程序,請排定資料表標記程序在資料庫備份排定執行之前進行。 您應該排程此作業在執行資料庫維護計劃前約一分鐘執行。

  1. 在 [物件總管] 中,展開 [SQL Server Agent],開啟 [ 作業 ] 功能表,然後選取 [ 新增作業]。

    新增工作 視窗隨即開啟。

  2. [名稱] 中,指定作業的名稱。 例如,您可以輸入 MarkTableJob 做為作業名稱。

  3. (選擇性)在 [描述] 中,指定作業的描述。

  4. [選取頁面] 中,選取 [ 步驟 ],然後選取 [ 新增]。

    [ 新增作業步驟 ] 視窗隨即開啟。

  5. [步驟名稱] 中,指定步驟的名稱。

  6. [資料庫] 中,選取組態資料庫的名稱。 例如,如果您的部署使用該資料庫的預設名稱,TFS_Configuration,請從下拉式清單中選取該資料庫。

  7. 選取 [開啟],流覽至您為標記數據表而建立的程序,選取 [ 開啟 兩次],然後選取 [ 確定]。

    備註

    您為標記資料表而建立的程式會執行下列步驟:

    EXEC sp_SetTransactionLogMarkAll 'TFSMark'
    
  8. [選取頁面] 中,選取 [ 排程],然後選取 [ 新增]。

    [ 新增作業排程] 視窗隨即開啟。

  9. [名稱] 中,指定排程的名稱。

  10. [頻率] 中,變更頻率以符合您將建立以備份資料庫的計劃。 例如,您可能會每天在上午 2 點執行增量備份,並在星期天上午 4 點執行完整備份。 若要標記增量備份的資料庫,您會將 [發生] 的值變更為 [每日]。 當您建立另一個作業來標記每周完整備份的資料庫時,請將「發生時間」的值保持為每日,然後選取 [星期日] 複選框。

  11. [每日頻率] 中,變更發生次數,讓作業排定在資料庫備份前一分鐘執行,然後選取 [ 確定]。 在範例部署中,在增量備份的作業中,您會指定上午 1:59。 在完整備份的作業中,您會指定上午 3:59。

  12. [新增作業] 中,選取 [確定 ] 以完成建立排程工作。

建立完整備份的維護計劃

建立用於標記資料庫的排程作業之後,您可以使用 [維護計劃精靈] 來排程部署 Azure DevOps Server 所使用之所有資料庫的完整備份。

這很重要

如果您的部署使用 SQL Server 的 Enterprise 或 Datacenter 版本,但您可能需要將資料庫還原至執行 Standard 版本的伺服器,您必須使用停用 SQL Server 壓縮所建立的備份集。 除非您停用數據壓縮,否則您將無法將 Enterprise 或 Datacenter Edition 資料庫還原至執行 Standard Edition 的伺服器。 您應該在建立維護計劃之前關閉壓縮。 若要關閉壓縮,請遵循本 Microsoft知識庫文章中的步驟。

  1. SQL Server Management Studio 中,展開 [ 管理 ] 節點,開啟 [維護計劃 ] 子功能表,然後選取 [ 維護計劃精靈]。

  2. [SQL Server 維護計劃精靈] 的歡迎頁面上,選取 [ 下一步]。

    [ 選取計劃屬性] 頁面隨即出現。

  3. 在 [ 名稱] 方塊中,指定維護計劃的名稱。

    例如,您可以建立名為 TfsFullDataBackup 的完整備份計劃。

  4. 選取 整個方案的 [單一排程] 或 [沒有排程],然後選取 [ 變更]。

  5. 在 [ 頻率 ] 和 [ 每日頻率] 下,指定方案的選項。 例如,您可以在頻率中指定每周的備份於星期日進行,並在每日頻率中設定時間為上午4點。

    [工期] 底下,保留預設值[ 無結束日期]。 選取確定,然後選取下一步

  6. 在 [選取維護工作] 頁面上,選取 [備份資料庫]、[執行 SQL Server Agent 作業] 和 [備份資料庫 ][事務歷史記錄] 複選框,然後選取 [下一步]。

  7. 在 [ 選取維護工作順序 ] 頁面上,變更順序,讓完整備份先執行,再執行 Agent 作業,然後選取事務歷史記錄備份,然後選取 [ 下一步]。

    如需此對話框的詳細資訊,請按 F1,另請參閱 維護計劃精靈

  8. 在 [ 定義備份資料庫 (完整) 工作 ] 頁面上,選取向下箭號,選取 [所有資料庫],然後選取 [ 確定]。

  9. 指定備份選項,以便視您的部署和資源將檔案儲存至磁碟或磁帶,然後選取 [ 下一步]。

  10. 在 [ 定義執行 SQL Server Agent 作業工作 ] 頁面上,選取您為數據表標記建立之排程作業的複選框,然後選取 [ 下一步]。

  11. 在 [ 定義備份資料庫 (事務歷史記錄) 工作 ] 頁面上,選取向下箭號,選取 [所有資料庫],然後選取 [ 確定]。

  12. 指定備份選項,以便視您的部署和資源將檔案儲存到磁碟或磁帶,然後選取 [ 下一步]。

  13. 在 [ 選取報表選項 ] 頁面上,指定報表散發選項,然後選取 [ 下一 步] 兩次。

  14. 在 [ 完成精靈] 頁面上,選取 [ 完成]。

    SQL Server 會建立維護計劃,並根據您指定的頻率來備份您指定的資料庫。

建立差異備份的維護計劃

使用維護計劃精靈來排程 Azure DevOps Server 部署所使用之所有資料庫的差異備份。

這很重要

SQL Server Express 不包含維護計劃精靈。 您必須手動編寫差異備份的排程腳本。 如需詳細資訊,請參閱建立差異資料庫備份 (Transact-SQL)。

  1. 登入執行 SQL Server 實例的伺服器,其中包含您要備份的資料庫。

  2. 開啟 [SQL Server Management Studio] 。

    1. 在 [ 伺服器類型 ] 列表中,選取 [Database Engine]。

    2. 在 [伺服器名稱和驗證] 清單中,選取適當的伺服器和驗證配置。

    3. 如果您的 SQL Server 實例需要它,請在 [使用者名稱 ] 和 [ 密碼] 中指定適當帳戶的認證。

    4. 選擇 連線

  3. SQL Server Management Studio 中,展開 [ 管理 ] 節點,開啟子功能表,選取 [維護計劃],然後選取 [ 維護計劃精靈]。

  4. [SQL Server 維護計劃精靈] 的歡迎頁面上,選取 [ 下一步]。

  5. 在 [ 選取計劃屬性] 頁面上的 [ 名稱 ] 方塊中,指定維護計劃的名稱。

    例如,您可以命名差異備份 TfsDifferentialBackup 的計劃。

  6. 選取 整個方案的 [單一排程] 或 [沒有排程],然後選取 [ 變更]。

  7. 在 [ 頻率 ] 和 [ 每日頻率] 下,指定備份方案的選項。

    [工期] 底下,保留預設值[ 無結束日期]。 選取確定,然後選取下一步

  8. 在 [ 選取維護工作 ] 頁面上,選取 [備份資料庫 (差異)] 複選框,然後選取 [ 下一步]。

  9. 在 [ 定義備份資料庫 (差異) 工作 ] 頁面上,選取向下箭號,選取 [所有資料庫],然後選取 [ 確定]。

  10. 指定備份選項,以便視您的部署和資源將檔案儲存到磁碟或磁帶,然後選取 [ 下一步]。

  11. 在 [ 選取報表選項 ] 頁面上,指定報表散發選項,然後選取 [ 下一 步] 兩次。

  12. 在 [ 完成精靈] 頁面上,選取 [ 完成]。

    SQL Server 會建立維護計劃,並根據您指定的頻率來備份您指定的資料庫。

建立事務歷史記錄的維護計劃

您可以使用維護計劃精靈來排程 Azure DevOps Server 部署所使用之所有資料庫的事務歷史記錄備份。

這很重要

SQL Server Express 不包含維護計劃精靈。 您必須手動編寫事務歷史記錄備份排程的腳本。 如需詳細資訊,請參閱建立事務歷史記錄備份 (Transact-SQL)。

  1. 登入執行 SQL Server 實例的伺服器,其中包含要備份的資料庫。

  2. 開啟 [SQL Server Management Studio] 。

  3. 在 [ 伺服器類型 ] 列表中,選取 [Database Engine]。

    1. 在 [伺服器名稱和驗證] 清單中,選取適當的伺服器和驗證配置。

    2. 如果您的 SQL Server 實例需要它,請在 [使用者名稱 ] 和 [ 密碼] 中指定適當帳戶的認證。

    3. 選擇 連線

  4. SQL Server Management Studio 中,展開 [ 管理 ] 節點,開啟子功能表,選取 [維護計劃],然後選取 [ 維護計劃精靈]。

  5. [SQL Server 維護計劃精靈] 的歡迎頁面上,選取 [ 下一步]。

    [ 選取計劃屬性] 頁面隨即出現。

  6. 在 [ 名稱] 方塊中,指定維護計劃的名稱。

    例如,您可以將計劃命名為備份事務歷史記錄 TfsTransactionLogBackup 的計劃。

  7. 選取 整個方案的 [單一排程] 或 [沒有排程],然後選取 [ 變更]。

  8. 在 [ 頻率 ] 和 [ 每日頻率] 下,指定方案的選項。

    [工期] 底下,保留預設值[ 無結束日期]。

  9. 選取確定,然後選取下一步

  10. 在 [ 選取維護工作 ] 頁面上,選取 [ 執行 SQL Server Agent 作業備份資料庫 (事務歷史記錄檔) ] 複選框,然後選取 [ 下一步]。

  11. 在 [ 選取維護工作順序 ] 頁面上,變更訂單,讓 Agent 作業在事務歷史記錄備份之前執行,然後選取 [ 下一步]。

    如需此對話框的詳細資訊,請按 F1,另請參閱 維護計劃精靈

  12. 在 [ 定義執行 SQL Server Agent 作業工作 ] 頁面上,選取您為數據表標記建立之排程作業的複選框,然後選取 [ 下一步]。

  13. 在 [ 定義備份資料庫 (事務歷史記錄) 工作 ] 頁面上,選取向下箭號,選取 [所有資料庫],然後選取 [ 確定]。

  14. 指定備份選項,以便視您的部署和資源將檔案儲存到磁碟或磁帶,然後選取 [ 下一步]。

  15. 在 [ 選取報表選項 ] 頁面上,指定報表散發選項,然後選取 [ 下一 步] 兩次。

  16. 在 [ 完成精靈] 頁面上,選取 [ 完成]。

    SQL Server 會建立維護計劃,並根據選取的頻率備份指定資料庫的事務歷史記錄。

備份 Reporting Services 的加密金鑰

您必須備份 Reporting Services 的加密金鑰,作為備份系統的一部分。 如果沒有此加密金鑰,您將無法還原報告數據。 針對 Azure DevOps Server 的單一伺服器部署,您可以使用 Reporting Services 組態工具來備份 SQL Server Reporting Services 的加密密鑰。 您也可以選擇使用 RSKEYMGMT 命令行工具,但組態工具更簡單。 如需詳細資訊,請參閱 RSKEYMGMT 公用程式

  1. 在執行 Reporting Services 的伺服器上,開啟 Reporting Services 組態管理員

    [ 報表伺服器安裝實例選取] 對話框隨即開啟。

  2. 指定資料層伺服器和資料庫實例的名稱,然後選取 [ 連接]。

  3. 在左側的導覽列中,選取 [ 加密密鑰],然後選取 [ 備份]。

    [ 加密金鑰資訊] 對話框隨即開啟。

  4. [檔案位置] 中,指定您要儲存此金鑰複本的位置。

    您應該考慮將此金鑰儲存在與執行 Reporting Services 的電腦不同的電腦上。

  5. [密碼] 中,指定檔案的密碼。

  6. [確認密碼] 中,再次指定檔案的密碼,然後選取 [ 確定]。