本文著重於數據遷移工具所需的小組準備和檔案產生。
必要條件
開始準備測試回合移轉之前,請先完成驗證 階段 。
產生移轉設定
請執行下列步驟來產生移轉規格和相關檔案,以將集合資料庫的移轉排入佇列。
使用下列參數執行資料遷移工具 prepare 命令:
/collection:http://localhost:8080/tfs/DefaultCollection/ tenantDomainName:contoso.com /Region:CUS- 租使用者網域名稱選項是貴公司 Microsoft Entra ID 租使用者的名稱。
- 準備命令需要因特網存取。 如果您的 Azure DevOps Server 缺少因特網連線能力,請從不同的電腦執行 命令。
- 「組織區域」一詞是指您打算將集合移轉至 Azure DevOps Services 的位置。 您先前已選取區域並記錄其簡碼。 在 prepare 命令中使用此程式代碼。
使用具有許可權的租用戶使用者登入,以讀取 Microsoft Entra ID 租使用者中所有使用者的相關信息。
設定移轉規格檔案
移轉規格檔案是 JSON 檔案,可指示資料遷移工具如何執行下列動作。
- 設定已移轉的組織
- 指定來源位置
- 自訂移轉
許多欄位會在準備步驟期間自動填入,但您必須設定下列欄位:
- 組織名稱: 您要建立以移轉數據的組織名稱。
- 位置: 資料庫和移轉檔案的備份要上傳至 Azure 儲存容器。 此欄位會指定移轉工具所使用的 SAS 金鑰,以安全地連線和讀取 Azure 記憶體容器中的來源檔案。 在第五階段會涵蓋建立儲存容器,而在第六階段會涵蓋產生 SAS 金鑰,再排隊等候進行新的移轉。
- DACPAC: 封裝集合 SQL 資料庫的檔案。
- 移轉類型: 移轉類型:測試回合或生產執行。
每個移轉規格檔案都適用於單一集合。 如果您嘗試使用針對另一個集合產生的移轉規格檔案,則移轉不會啟動。 您必須針對您想要移轉的每個集合準備測試回合,並使用產生的移轉規格檔案來將移轉排入佇列。
檢查身份識別映射記錄檔
身分識別映射日誌與您移轉的實際數據一樣重要。 當您檢查記錄檔時,請瞭解身分識別移轉的運作方式和潛在結果。 當您移轉身分識別時,它可以是正在使用或歷史的。 作用中身分識別可登入 Azure DevOps Services,而歷史身分識別則無法。 服務會決定使用哪一種類型。
注意
一旦身分識別移轉為歷程記錄身分識別,就沒有任何方法可將它轉換成作用中身分識別。
活動中的身分識別
有效身分識別是指遷移後 Azure DevOps 服務中的使用者身分識別。 在 Azure DevOps Services 中,這些身份被授權,並顯示為組織中的使用者。 身分識別會在身分識別對應記錄檔的 預期匯入狀態 欄中標示為啟用。
歷史身份
歷史身分識別會對應在身份映射記錄檔中的「預期匯入狀態」欄。 檔案中沒有行項目的身份也會成為歷史記錄。 沒有記錄條目的身分識別範例可能是一名已經離職的公司員工。
不同於活躍的身分識別,歷史身分識別:
- 遷移後您無法存取組織。
- 沒有許可證。
- 不要顯示為組織中的使用者。 僅保留在組織內該身分識別名稱的概念,這樣稍後就可以搜尋其歷史記錄。 我們建議您針對不再在公司工作或不需要進一步存取組織的使用者,使用歷程記錄身分識別。
注意
身分識別移轉為歷程記錄之後,您無法將其設為作用中。
授權
在移轉期間,系統會針對身分識別對應記錄的 [預期匯入狀態] 數據行中顯示為「作用中」的所有用戶自動指派授權。 如果自動授權指派不正確,您可以在移轉完成後編輯一或多個使用者的「存取層級」來變更它。
指派可能不一定是完美的,因此您必須等到下個月的第一個月才視需要重新指派授權。 如果到下個月的第一個月,您不會將訂用帳戶連結到您的組織,並購買正確的授權數目,則所有寬限期授權都會被撤銷。 或者,如果自動指派指派的授權數目超過您下個月購買的授權,則我們不會向您收取額外的授權費用,但我們會撤銷所有未付授權。
若要避免失去存取權,建議您在每月的第一天之前綁定訂閱並購買所需的授權,因為帳單是每月執行的。 針對所有的測試執行,只要組織仍在運作,授權會是免費的。
Azure DevOps 訂用帳戶
根據預設,不會為移轉指派 Visual Studio 訂閱。 相反地,具有 Visual Studio 訂閱 的用戶會自動升級為使用該授權。 如果使用者的工作組織正確連結,Azure DevOps Services 會在移轉后的第一次登入時自動套用其Visual Studio訂用帳戶權益。
如果使用者不會自動升級為在 Azure DevOps Services 中使用其 Visual Studio 訂用帳戶,則不需要重複測試回合移轉。 Visual Studio 訂用帳戶連結是在移轉範圍之外發生的情況。 如果工作組織在移轉前後正確連結,則使用者會在下一次登入時自動升級其授權。 升級後,下一次使用者初次登入組織時會自動完成升級。
僅限制對 Azure DevOps Services IP 的存取
僅允許來自 Azure DevOps Services 的 IP 存取您的 Azure 儲存體帳戶。 您可以只允許來自集合資料庫移轉程式相關之 Azure DevOps Services IP 的連線來限制存取。 需要授與記憶體帳戶存取權的IP取決於您要移轉至的區域。
選項 1:使用服務標籤
您可以透過入口網站或以程序設計方式,將服務標籤新增 azuredevops 至網路安全組或防火牆,輕鬆地允許來自所有 Azure DevOps Services 區域的連線。
選項 2:使用 IP 清單
IpList使用 命令來取得需要授與存取權的IP清單,以允許來自特定 Azure DevOps Services 區域的連線。
說明檔中包含從 Azure DevOps Server 實例本身和遠端電腦執行移轉程式的指示和範例。 如果您是從其中一個 Azure DevOps Server 實例應用層執行命令,您的命令應該具有下列結構:
Migrator IpList /collection:{CollectionURI} /tenantDomainName:{name} /region:{region}
您可以透過入口網站或以程序設計方式,將IP清單新增至網路安全組或防火牆。
設定 SQL Azure 的 IP 防火牆例外狀況
本節僅適用於設定 SQL Azure 的防火牆例外狀況。 如需 DACPAC 移轉,請參閱設定 Azure 儲存體 防火牆和虛擬網路。
數據遷移工具需要 Azure DevOps Services IP 僅針對埠 1433上的輸入連線進行設定。
執行下列步驟,為 SQL Azure VM 在 Azure 網路層處理的必要 IP 授與例外狀況。
- 登入 Azure 入口網站。
- 前往您的 SQL Azure VM。
- 在 [設定] 中,選取 [網路]。
- 選擇 [新增輸入連接埠規則]。
- 選取 [ 進階 ] 來設定特定IP的輸入埠規則。
- 在 [來源] 下拉式清單中,選取 [IP 位址],輸入需要授與例外狀況的IP位址、將 [目的地埠範圍] 設定為
1433,然後在 [名稱] 方塊中輸入最能描述您要設定之例外狀況的名稱。
根據其他已設定的輸入埠規則,您可能需要變更 Azure DevOps Services 例外狀況的預設優先順序,因此不會忽略它們。 例如,如果您在 1433 的所有輸入連線上都有「拒絕」規則,且優先順序高於您的 Azure DevOps Services 例外狀況,數據遷移工具可能無法成功連線到您的資料庫。
重複新增輸入埠規則,直到所有必要的 Azure DevOps Services IP 都獲得例外狀況為止。 遺失一個IP可能會導致您的移轉無法啟動。
移轉大型集合
對於數據遷移工具警告的資料庫太大,需要不同的數據封裝方法才能遷移至 Azure DevOps Services。 如果您不確定集合是否超過大小閾值,您應該在集合上執行數據遷移工具驗證。 驗證可讓您知道是否需要使用 SQL Azure VM 方法來進行移轉。
判斷您是否可以減少集合大小
檢查您是否可以清除舊數據。 隨著時間的推移,收集可以累積大量數據。 此成長是 DevOps 程式的自然部分,但您可能會發現您不需要保留所有數據。 不再相關的數據的常見範例例如較舊的工作區和建置結果。
數據遷移工具會掃描您的集合,並將其與先前所述的限制進行比較。 然後,它會報告您的集合是否符合 DACPAC 或 SQL 移轉方法的資格。 一般而言,其概念是,如果您的集合足夠小,以符合 DACPAC 限制,您可以使用更快速且更簡單的 DACPAC 方法。 不過,如果您的集合太大,您必須使用 SQL 移轉方法,這牽涉到設定 SQL Azure VM 並手動移轉資料庫。
大小限制
目前限制如下:
- 如果超過此限制,則您必須執行 SQL 移轉方法,DACPAC 的資料庫大小總計 150 GB(資料庫元數據 + Blob)。
- 如果任何單一數據表超過此限制,則您需要執行 SQL 移轉方法,30 GB 的 DACPAC 個別數據表大小(資料庫元數據 + Blob)。
- SQL 移轉方法的 1,536 GB 資料庫元數據大小。 超過此限制會發出警告,建議您保持此大小,以成功移轉。
- SQL 移轉方法的 2,048 GB 資料庫元數據大小。 超過此限制會導致錯誤,因此您無法執行移轉。
- SQL 移轉方法的 Blob 大小沒有限制。
當您清除較舊且不再相關的成品時,它可能會移除比您預期更多的空間,而且可以判斷您是否使用 DACPAC 移轉方法或 SQL Azure VM。
重要
刪除較舊的數據之後,除非您還原集合的較舊備份,否則無法復原它。
如果您處於 DACPAC 閾值之下,請遵循指示來產生 DACPAC 以進行移轉。 如果您仍然無法在 DACPAC 閾值下取得資料庫,您必須設定 SQL Azure VM 以遷移至 Azure DevOps Services。
設定 SQL Azure VM 以遷移至 Azure DevOps Services
執行下列高階步驟來設定 SQL Azure 虛擬機 (VM) 以遷移至 Azure DevOps Services。
設定 Azure SQL VM
您可以快速從 Azure 入口網站 設定 SQL Azure VM。 如需詳細資訊,請參閱使用 Azure 入口網站 搭配 SQL Server 布建 Windows 虛擬機。
SQL Azure VM 和鏈接數據磁碟的效能會對移轉的效能產生重大影響。 基於這個理由,強烈建議您執行下列工作:
- 選取層級
D8s_v5_*或更大的 VM 大小。 - 使用受控磁碟。
- 請參閱 虛擬機和磁碟效能。 請確定已設定基礎結構,讓 VM IOPS(每秒輸入/輸出)和記憶體 IOPS 不會成為移轉效能的瓶頸。 例如,請確定連結至 VM 的數據磁碟數目足以支援來自 VM 的 IOPS。
Azure DevOps Services 可在全球各地的數個 Azure 區域中取得。 若要確保移轉順利啟動,請務必將數據放在正確的區域中。 如果您在錯誤的位置設定 SQL Azure VM,移轉將無法啟動。
重要
Azure VM 需要公用 IP 位址。
如果您使用此移轉方法,請在支持的區域中建立 VM。 雖然 Azure DevOps Services 可在 美國 (US) 的多個區域中使用,但只有 Central 美國 區域接受新的組織。 您現在無法將數據遷移至其他美國 Azure 區域。
注意
DACPAC 客戶應參閱<步驟 3:上傳 DACPAC 檔案](migration-test-run.md#)一節中的區域數據表。 上述指導方針僅適用於 SQL Azure VM。 如果您是 DACPAC 客戶,請參閱 支援的 Azure 區域以進行移轉。
使用下列 SQL Azure VM 組態:
- 將 SQL 暫存資料庫設定為使用磁碟驅動器 C 以外的磁碟驅動器。在理想情況下,磁碟驅動器應該有足夠的可用空間;至少相當於資料庫最大的數據表。
- 如果您在縮小源資料庫大小后仍然超過 1 TB,您必須將更多 1 TB 磁碟連結,並將其合併成單一分割區,以在 VM 上還原資料庫。
- 如果您的集合資料庫大小超過 1 TB,請考慮針對暫存資料庫和收集資料庫使用 SSD(固態硬碟)。 此外,請考慮使用較大的 VM 搭配 16 個虛擬 CPU(vCPU)和 128 GB 的 RAM(隨機存取記憶體)。
在 VM 上還原資料庫
設定並設定 Azure VM 之後,您必須將卸離備份從 Azure DevOps Server 實例移至 Azure VM。 集合資料庫必須在 SQL 實例上還原,而且不需要在 VM 上安裝 Azure DevOps Server。
設定您的集合以進行移轉
在 Azure VM 上還原收集資料庫之後,請設定 SQL 登入以允許 Azure DevOps Services 連線到資料庫以移轉數據。 此登入只允許單一資料庫的讀取許可權。
在 VM 上開啟 SQL Server Management Studio,然後針對要移轉的資料庫開啟新的查詢視窗。
將資料庫的復原設定為簡單:
ALTER DATABASE [<Database name>] SET RECOVERY SIMPLE;建立資料庫的 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'
重要
在 VM 上的 SQL Server Management Studio 中啟用 SQL Server 和 Windows 驗證 模式。 如果您未啟用驗證模式,移轉會失敗。
將移轉規格檔案設定為以 VM 為目標
更新移轉規格檔案,以包含如何連線到 SQL Server 實例的相關信息。 開啟您的移轉規格檔案,並進行下列更新:
從來源檔案物件中移除 DACPAC 參數。 變更前的移轉規格看起來像下列範例程序代碼。
變更后的移轉規格看起來像下列範例程序代碼。
輸入必要的參數,並在規格檔案中的來源物件中新增下列屬性物件。
"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 登入或輪替密碼。 Microsoft移轉完成後不會保留登入資訊。
在所選的數據中心內建立 Azure 儲存體 容器
使用適用於 Azure DevOps 的數據遷移工具,需要在與最終 Azure DevOps Services 組織相同的 Azure 數據中心內擁有 Azure 儲存體 容器。 例如,如果您想要在 Central 美國 資料中心建立 Azure DevOps Services 組織,請在相同的數據中心中建立 Azure 儲存體 容器。 此動作可大幅加快移轉 SQL 資料庫所需的時間,因為傳輸發生在相同的數據中心內。
如需詳細資訊,請參閱建立儲存體帳戶。
設定付費方式
對剛完成移轉的 Azure DevOps Services 組織設置一個寬限期,讓您的小組能夠完成所需的任何步驟,並修正授權分配。 如果您預期可能想要購買更多使用者方案、建置或部署管線、託管的組建服務、託管的負載測試服務,例如,強烈建議您確定 Azure 訂用帳戶已準備好連結至已移轉的組織。 寬限期會在完成移轉后的第一天結束。
當您需要進行連結時,我們會在移轉後階段(連結)中再次提醒您。 此準備步驟是為了確保您了解在後續步驟中使用的 Azure 訂用帳戶。 如需詳細資訊,請參閱 為您的組織設定帳單。