準備測試回合移轉
本文著重於數據遷移工具所需的小組準備和檔案產生。
必要條件
開始準備測試回合移轉之前,請先完成驗證 階段 。
產生移轉設定
請執行下列步驟來產生移轉規格和相關檔案,以將集合資料庫的移轉排入佇列。
使用下列參數執行資料遷移工具 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 記憶體容器中的來源檔案。 建立記憶體容器會在階段 5 稍後涵蓋,並會在第 6 階段涵蓋產生 SAS 金鑰,再排入佇列以進行新的移轉。
- DACPAC: 封裝集合 SQL 資料庫的檔案。
- 移轉類型: 移轉類型:測試回合或生產執行。
每個移轉規格檔案都適用於單一集合。 如果您嘗試使用針對另一個集合產生的移轉規格檔案,則移轉不會啟動。 您必須針對您想要移轉的每個集合準備測試回合,並使用產生的移轉規格檔案來將移轉排入佇列。
檢閱身分識別對應記錄檔
身分識別對應記錄與您移轉的實際數據一樣重要。 當您檢查記錄檔時,請瞭解身分識別移轉的運作方式和潛在結果。 當您移轉身分識別時,它可以是作用中或歷程記錄。 作用中身分識別可以登入 Azure DevOps Services,而歷程記錄身分識別則無法登入。 服務會決定使用哪一種類型。
注意
一旦身分識別移轉為歷程記錄身分識別,就沒有任何方法可將它轉換成作用中身分識別。
使用中身分識別
作用中身分識別是指移轉后 Azure DevOps Services 中的使用者身分識別。 在 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 儲存體 帳戶的存取限來自 Azure DevOps Services 的 IP。 您可以只允許來自集合資料庫移轉程式相關之 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。
設定 SQL Azure 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 訂用帳戶。 如需詳細資訊,請參閱 為您的組織設定帳單。