Share via


手動備份 Azure DevOps Server

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

您可以使用 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。 如需詳細資訊,請參閱 Download SQL Server Management Studio (SSMS)(下載 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 Configuration Manager]。

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

  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 中,反白顯示伺服器的名稱、開啟子功能表,然後選取 [新增查詢]。

    隨即開啟 Database Engine 查詢編輯器視窗。

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

    查詢編輯器會在其內容中執行 sqlcmd 陳述式。 如果 [查詢] 功能表未出現,請在 [資料庫引擎 查詢編輯器] 視窗中選取新查詢中的任何位置。

  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
    • ReportServer
    • 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
    • ReportServer
    • ReportServerTempDB

    提示

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

建立預存程序來一次標示所有資料表

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

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

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

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

    在範例部署中,伺服器的名稱是 FABRIKAMPRIME,而且部署中只有一個專案集合,這是在安裝 defaultCollection Azure DevOps Server () 時所建立的預設專案集合。 知道這一點後,您會建立下列指令碼:

        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 使用之所有資料庫的完整備份。

重要

如果您的部署使用 enterprise 或 Datacenter 版本的 SQL Server,但您可能需要將資料庫還原到執行 Standard Edition 的伺服器,則必須使用已停用 SQL Server 壓縮所建立的備份集。 除非您停用數據壓縮,否則您將無法將 Enterprise 或 Datacenter 版本資料庫還原到執行 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. 在 [ 伺服器類型 ] 清單中,選取 [資料庫引擎]。

    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 Configuration Manager

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

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

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

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

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

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

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

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