準備測試階段遷移

本文著重於數據遷移工具所需的小組準備和檔案產生。

移轉過程七個階段中的[準備測試階段]的高亮圖表。

必要條件

開始準備測試回合移轉之前,請先完成驗證 階段 。

產生移轉設定

產生遷移規格及相關檔案以排定您的集合資料庫遷移。

  1. 使用下列參數執行資料遷移工具 prepare 命令:

    /collection:http://localhost:8080/tfs/DefaultCollection/ tenantDomainName:contoso.com /Region:CUS

    • 使用租戶網域名稱作為你公司 Microsoft Entra ID 租戶的名稱。
    • 準備命令需要因特網存取。 如果你的 Azure DevOps Server 沒有網路連線,請從另一台電腦執行該指令。
    • 「組織區域」一詞指的是你計劃將收藏遷移到 Azure DevOps Services 的地點。 您先前已選取區域並記錄其簡碼。 在 prepare 命令中使用此程式代碼。
  2. 請使用在 Microsoft Entra ID 租戶中具有權限可以檢視所有使用者資訊的租戶用戶進行登入。

設定移轉規格檔案

遷移規範檔案是一個 JSON 檔案,指示資料遷移工具如何執行以下操作:

  • 設定已移轉的組織
  • 指定來源位置
  • 自訂移轉

許多欄位會在準備步驟期間自動填入,但您必須設定下列欄位:

  • 組織名稱: 您要建立以移轉數據的組織名稱。
  • Location: 備份你的資料庫和遷移檔案,準備上傳到Azure儲存容器。 此欄位指定遷移工具用來安全連接並讀取 Azure 儲存容器原始檔案的 SAS 金鑰。 在第五階段會涵蓋建立儲存容器,而在第六階段會涵蓋產生 SAS 金鑰,再排隊等候進行新的移轉。
  • DACPAC: 封裝集合 SQL 資料庫的檔案。
  • 移轉類型: 移轉類型:測試回合或生產執行。

每個移轉規格檔案都適用於單一集合。 如果你嘗試使用為其他集合產生的遷移規格檔案,遷移不會開始。 您必須針對您想要移轉的每個集合準備測試回合,並使用產生的移轉規格檔案來將移轉排入佇列。

檢查身份識別映射記錄檔

身分識別映射日誌與您移轉的實際數據一樣重要。 當您檢查記錄檔時,請瞭解身分識別移轉的運作方式和潛在結果。 當您移轉身分識別時,它可以是正在使用或歷史的。 主動身份可以登入 Azure DevOps 服務,而歷史身份則不行。 服務會決定使用哪一種類型。

注意

一旦身份被遷移成歷史身份,你就無法將其轉換成活躍身份。

活動中的身分識別

主動身份指的是遷移後 Azure DevOps Services 中的使用者身份。 在 Azure DevOps 服務中,這些身份是授權的,並以使用者身份顯示於組織中。 身分識別會在身分識別對應記錄檔的 預期匯入狀態 欄中標示為啟用。

歷史身份

身份映射日誌檔 在預期匯入狀態 欄位顯示歷史身份。 檔案中沒有行項目的身份也會成為歷史記錄。 沒有記錄條目的身分識別範例可能是一名已經離職的公司員工。

不同於活躍的身分識別,歷史身分識別:

  • 遷移後您無法存取組織。
  • 沒有許可證。
  • 不要顯示為組織中的使用者。 僅保留在組織內該身分識別名稱的概念,這樣稍後就可以搜尋其歷史記錄。 對於已不再在公司工作或不需要進一步存取組織的使用者,使用歷史身份。

注意

身分識別移轉為歷程記錄之後,您無法將其設為作用中。

授權

遷移過程中,程序會自動為身份映射日誌中「預期匯入狀態」欄中顯示為活躍的所有使用者分配授權。 如果自動授權分配錯誤,遷移完成後,你可以透過編輯一位或多位使用者 的存取權限 來更改。

指派可能不一定是完美的,因此您必須等到下個月的第一個月才視需要重新指派授權。 若在下個月初前,您未將訂閱連結至組織並購買正確數量的授權,所有寬限期授權將被撤銷。 或者,如果自動分配給你下個月的授權數量超過你購買的,那麼你不會被收取額外授權的費用,但所有未繳的授權都會被撤銷。

為避免失去存取權,建議在每月一日前連結訂閱並購買所需的授權,因為帳單是每月計費。 針對所有的測試執行,只要組織仍在運作,授權會是免費的。

Azure DevOps 訂閱

Visual Studio 訂閱不會被預設指派用於遷移。 相反地,擁有 Visual Studio 訂閱 的使用者會自動升級使用該授權。 如果使用者的工作組織連結正確,Azure DevOps Services 會在遷移後首次登入時自動套用 Visual Studio 訂閱的好處。

如果使用者沒有自動升級以使用 Azure DevOps 服務中的 Visual Studio 訂閱,你不需要重複測試遷移。 Visual Studio 訂閱連結是發生在遷移範圍之外的事情。 如果工作組織在移轉前後正確連結,則使用者會在下一次登入時自動升級其授權。 一旦升級完成,下次遷移時,使用者會在初次登入組織時自動升級。

限制只能存取 Azure DevOps Services 的 IP 位址

限制你的 Azure 儲存體 帳號只能存取來自 Azure DevOps Services 的 IP。 你可以限制存取,只允許涉及集合資料庫遷移流程的 Azure DevOps Services IP 連線。 需要存取你儲存帳號的 IP 取決於你要遷移到的區域。

在 DACPAC 遷移過程中,有兩個方會存取儲存容器:一是你用來上傳 DACPAC 的機器,例如使用 AzCopy 或 Azure 儲存體總管,另一是託管的 Azure DevOps 資料匯入服務。 如果你啟用儲存帳號防火牆,必須允許上傳機器的公開出口 IP,並且必須遵守 選項 2:使用 IP 清單中描述的同區域限制。

Migrator validate 和 Migrator prepare 指令會連線到您的集合資料庫與 Microsoft Entra ID。 Migrator import 指令不會連接到任一者。 它透過個人存取權杖(PAT)將已準備好的套件透過 HTTPS 提交至託管資料匯入服務,且可從任何有網路連線的機器上執行。 這些指令都無法讀取儲存容器。 只有上傳步驟會這樣。

選項 1:使用服務標籤

此選項適用於 SQL Azure VM 遷移方式,透過網路安全群組(NSG)保護虛擬機。 Azure 儲存體 帳號防火牆不支援服務標籤,所以你無法用這個選項來允許存取 DACPAC 儲存容器。 對於 DACPAC 遷移,請使用 選項 2:使用 IP 清單 ,並檢視該節所述的同區域限制。

你可以透過入口網站或程式化的方式,將 azuredevops 服務標籤加入網路安全群組或防火牆,輕鬆允許來自所有 Azure DevOps Services 區域的連線。

選項 2:使用 IP 清單

重要

Azure 儲存體 IP 防火牆規則不適用於來自與儲存帳號相同 Azure 區域的請求。 欲了解更多資訊,請參閱 IP 網路規則限制。 如果你的 DACPAC 儲存帳號與目標組織位於同一個 Azure 區域,且公共網路存取設定為「已選取網路」,Azure 儲存體 無法匹配回Migrator IpList傳的 IP,導致 DACPAC 存取錯誤失敗VS403247。

為了繞過同一區域的限制,請採用以下方法之一。 較安全的做法列在前面:

  • 使用 SQL Azure VM 移轉方法,其中具有 azuredevops 服務標籤的網路安全性群組 (NSG) 是支援的路徑。
  • 暫時將 公共網路存取 設為儲存帳號 上的所有網路 ,直到匯入期間。 共享存取簽章(SAS)仍然執行授權。 匯入完成後,立即將 公共網路存取 還原 至選定網路 。 遷移後讓儲存帳號對所有網路開放,是一種安全回歸。

使用 IpList 指令取得需要存取以允許特定 Azure DevOps Services 區域連線的 IP 清單。

說明文件包含從 Azure DevOps Server 實例本身及遠端機器執行 Migrator 的說明與範例。 如果你是從 Azure DevOps Server 實例的應用程式層級執行這個指令,你的指令應該會有以下結構:

Migrator IpList /collection:{CollectionURI} /tenantDomainName:{name} /region:{region} 

您可以透過入口網站或以程序設計方式,將IP清單新增至網路安全組或防火牆。

設定 SQL Azure 的 IP 防火牆例外狀況

本節介紹 SQL Azure 的防火牆例外配置。 關於 DACPAC 遷移,請參見 配置Azure 儲存體防火牆與虛擬網路。

資料遷移工具要求你將Azure DevOps服務的 IP 配置為只在埠號 1433 進行入站連線。

要對 Azure 網路層處理的 SQL Azure 虛擬機所需的 IP 授予例外,請完成以下步驟:

  1. 登入 Azure 入口網站。
  2. 請訪問您的 SQL Azure 虛擬機器。
  3. 在 [設定] 中,選取 [網路]。
  4. 選擇 [新增輸入連接埠規則]。  你的 SQL Azure VM 網路介面頁面上新增入站埠規則按鈕的截圖。
  5. 選取 [ 進階 ] 來設定特定IP的輸入埠規則。 [新增輸入安全性規則] 窗格上 [進階] 按鈕的螢幕快照。
  6. 在 來源 下拉選單中,選擇 IP 位址。 輸入一個需要例外的 IP 位址。 將 目的地埠範圍 設為 1433。 在 名稱 框中,輸入一個最能描述你正在設定的例外名稱。

根據其他設定的入站埠規則,你可能需要更改 Azure DevOps 服務例外的預設優先權,避免它們被忽略。 例如,如果你有一個「拒絕所有入站連線到 1433」的規則,優先權高於 Azure DevOps Services 的例外,資料遷移工具可能無法成功連接你的資料庫。

已完成輸入埠規則設定的螢幕快照。

重複新增入站埠規則,直到所有必要的 Azure DevOps Services IP 都出現例外為止。 遺失一個IP可能會導致您的移轉無法啟動。

移轉大型集合

對於資料遷移工具警告資料庫過大,遷移到 Azure DevOps 服務時需要不同的資料打包方式。 如果你不確定你的集合是否超過容量門檻,請對集合執行資料遷移工具驗證。 驗證會告訴你是否需要使用 SQL Azure VM 方法進行遷移。

判斷您是否可以減少集合大小

檢查是否能清理舊資料。 隨著時間推移,收藏可能會累積大量資料。 此成長是 DevOps 程式的自然部分,但您可能會發現您不需要保留所有數據。 不再相關的數據的常見範例例如較舊的工作區和建置結果。

數據遷移工具會掃描您的集合,並將其與先前所述的限制進行比較。 然後,它會報告您的集合是否符合 DACPAC 或 SQL 移轉方法的資格。 一般來說,如果你的收藏夠小以符合 DACPAC 的限制,你可以採用更快且簡單的 DACPAC 方法。 不過,如果你的集合太大,就需要使用 SQL 遷移方法,這需要建立 SQL Azure 虛擬機並手動遷移資料庫。

大小限制

目前限制如下:

  • DACPAC 的資料庫總容量為 150 GB(資料庫元資料 + blobs)。 如果超過這個限制,就必須執行 SQL 遷移方法。
  • DACPAC 的 30 GB 個別資料表大小(資料庫元資料 + blobs)。 如果任何單一資料表超過此限制,就必須執行 SQL 遷移方法。
  • 1,536-GB 的資料庫元資料大小適用於 SQL 遷移方法。 超過此限制會發出警告。 要成功進行遷移,請維持在此大小以下。
  • SQL 遷移方法的資料庫元資料大小為 2,048 GB。 超過此限制會導致錯誤,因此您無法執行移轉。
  • SQL 移轉方法的 Blob 大小沒有限制。

當你清理較舊、不再重要的文物時,可能會移除比預期更多的空間。 這次清理可以決定你是使用 DACPAC 遷移方法還是 SQL Azure 虛擬機。

重要

刪除較舊的數據之後,除非您還原集合的較舊備份,否則無法復原它。

如果您處於 DACPAC 閾值之下,請遵循指示來產生 DACPAC 以進行移轉。 如果你還是無法讓資料庫低於 DACPAC 門檻,你需要設定一個 SQL Azure 虛擬機來遷移到 Azure DevOps Services。

設定 SQL Azure VM 以遷移至 Azure DevOps 服務

請完成以下高階步驟,建立一個 SQL Azure 虛擬機(VM),以便遷移到 Azure DevOps Services。

  1. 設定 SQL Azure VM
  2. 設定IP防火牆例外狀況
  3. 在 VM 上還原資料庫
  4. 設定你的收藏進行遷移
  5. 將移轉規格檔案設定為以 VM 為目標

設置 SQL Azure 虛擬機器

你可以從 Azure 入口網站快速設定 SQL Azure 虛擬機。 欲了解更多資訊,請參見 使用 Azure 入口網站配置一台帶有 SQL Server 的Windows虛擬機。

你的 SQL Azure VM 及附加資料磁碟的效能,會大幅影響遷移的效能。 因此,請完成以下任務:

  • 選擇一個虛擬機大小,等級為 D8s_v5_* 或更高。
  • 使用受控磁碟。
  • 請參閱 虛擬機和磁碟效能。 請確定已設定基礎結構,讓 VM IOPS(每秒輸入/輸出)和記憶體 IOPS 不會成為移轉效能的瓶頸。 例如,請確定連結至 VM 的數據磁碟數目足以支援來自 VM 的 IOPS。

Azure DevOps 服務在全球多個Azure地區提供。 為了獲得最佳遷移效能,建議在與目的地組織相同的區域建立 SQL Azure 虛擬機。 不同區域的虛擬機不會阻擋遷移,但資料遷移工具會警告你並要求確認,然後才排隊進行遷移。

重要

Azure VM 需要公共 IP 位址。

如果您使用此移轉方法,請在支持的區域中建立 VM。 雖然 Azure DevOps 服務在美國多個地區可用,但只有美國中部地區接受新組織。 你現在無法將資料遷移到其他美國 Azure 區域。

注意

DACPAC 客戶應參閱<步驟 3:上傳 DACPAC 檔案](migration-test-run.md#)一節中的區域數據表。 以上指引僅適用於 SQL Azure 虛擬機。 如果你是 DACPAC 客戶,請查看 支援 Azure 遷移的地區。

請使用以下 SQL Azure VM 配置:

  • 將 SQL 暫存資料庫設定為使用非 C 磁碟的磁碟機。理想狀況下,磁碟機應該有充足的空間,至少相當於資料庫中最大的資料表。
  • 如果您在縮小源資料庫大小后仍然超過 1 TB,您必須將更多 1 TB 磁碟連結,並將其合併成單一分割區,以在 VM 上還原資料庫。
  • 如果您的集合資料庫大小超過 1 TB,請考慮針對暫存資料庫和收集資料庫使用 SSD(固態硬碟)。 此外,請考慮使用較大的 VM 搭配 16 個虛擬 CPU(vCPU)和 128 GB 的 RAM(隨機存取記憶體)。

在 VM 上還原資料庫

在你設定並設定 Azure 虛擬機後,你需要將分離備份從 Azure DevOps Server 實例帶到 Azure 虛擬機。 集合資料庫需要在你的 SQL 實例中還原,且不需要在虛擬機上安裝 Azure DevOps Server。

設定您的集合以進行移轉

在 Azure 虛擬機還原你的集合資料庫後,設定 SQL 認證,讓 Azure DevOps Services 能夠連接到資料庫並遷移資料。 此認證僅允許對一個資料庫進行讀取。

  1. 在虛擬機上開啟 SQL Server Management Studio,然後為你想遷移的資料庫開啟新的查詢視窗。

  2. 將資料庫的復原模型設為簡單:

    ALTER DATABASE [<Database name>] SET RECOVERY SIMPLE;
    
  3. 為資料庫建立 SQL 認證,並將該認證指派為 TFSEXECROLE 角色,如下範例所示。

    USE [<database name>] 
    CREATE LOGIN <pick a username> WITH PASSWORD = '<pick a password>' 
    CREATE USER <username> FOR LOGIN <username> WITH DEFAULT_SCHEMA=[dbo] 
    EXEC sp_addrolemember @rolename='TFSEXECROLE', @membername='<username>'
    

請參閱下列 SQL 命令範例:

    ALTER DATABASE [Foo] SET RECOVERY SIMPLE; 
     
    USE [Foo] 
    CREATE LOGIN fabrikam WITH PASSWORD = 'fabrikampassword' 
    CREATE USER fabrikam FOR LOGIN fabrikam WITH DEFAULT_SCHEMA=[dbo] 
    EXEC sp_addrolemember @rolename='TFSEXECROLE', @membername='fabrikam'

重要

在虛擬機上的 SQL Server Management Studio 中,啟用 SQL Server 和 Windows Authentication 模式。 如果您未啟用驗證模式,移轉會失敗。

將移轉規格檔案設定為以 VM 為目標

更新遷移規範檔,加入如何連接 SQL Server 實例的資訊。 開啟您的移轉規格檔案,並進行下列更新:

  1. 從來源檔案物件中移除 DACPAC 參數。 變更前的移轉規格看起來像下列範例程序代碼。

    變更前移轉規格的螢幕快照。

    變更后的移轉規格看起來像下列範例程序代碼。

    變更後移轉規格的螢幕快照。

  2. 輸入必要的參數,並在規格檔案中的來源物件中新增下列屬性物件。

    "Properties": 
    { 
        "ConnectionString": "Data Source={SQL Azure VM Public IP};Initial Catalog={Database Name};Integrated Security=False;User ID={SQL Login Username};Password={SQL Login Password};Encrypt=True;TrustServerCertificate=True"  
    }
    

套用變更之後,移轉規格看起來像下列範例。

引用 SQL Azure VM 的遷移規範截圖。

你的遷移規範現在已經設定成使用 SQL Azure VM 進行遷移。 繼續進行移轉的其餘準備步驟。 移轉完成後,請務必刪除 SQL 登入或輪替密碼。 Microsoft 在遷移完成後不會保留登入資訊。

創建一個 Azure 儲存體 Container 在所選的資料中心

使用 Data Migration Tool for Azure DevOps 需要一個 Azure 儲存體 容器。 為了獲得最佳遷移效能,請在與最終 Azure DevOps 服務組織相同的 Azure 資料中心建立容器。 例如,如果你打算在中央美國資料中心建立你的Azure DevOps服務組織,那麼在同一資料中心建立Azure 儲存體容器即可。 此動作可大幅加快移轉 SQL 資料庫所需的時間,因為傳輸發生在相同的數據中心內。 不同資料中心的容器不會阻擋遷移,但傳輸時間較長且可能產生資料傳輸費用。

如需詳細資訊,請參閱建立儲存體帳戶。

設定付費方式

當你遷移 Azure DevOps 服務組織時,新組織會有一個寬限期。 利用這段時間完成所有步驟並正確分配授權。 如果你想購買更多使用者計畫、建置或部署管線,或託管建置服務,務必準備好 Azure 訂閱,並連結到遷移後的組織。 寬限期將於您完成遷移後的下個月第一天結束。

遷移後階段會提醒你何時進行連結。 這個準備步驟主要是確保你知道後面用的是哪個 Azure 訂閱。 如需詳細資訊,請參閱 為您的組織設定帳單。

下一個步驟