驗證和匯入程式

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

本文將逐步引導您完成準備,以準備匯入 Azure DevOps Services 以準備執行。 如果您在程式中遇到錯誤,請參閱 針對匯入和移轉錯誤進行疑難解答。

必要條件

  • 您必須設定 Microsoft Entra 租使用者,如 Microsoft Entra 連線 Sync:變更預設組態中所述。 當 Azure DevOps Services 組織在匯入程式開始時建立 Azure DevOps Services 組織時,數據遷移工具會設定 Microsoft Entra 租使用者的連結。 當您將 內部部署的 Active Directory 與 Microsoft Entra ID 同步處理時,小組成員可以使用相同的認證進行驗證,而您的 Azure DevOps Services 系統管理員可以使用 Active Directory 群組來設定 Azure DevOps Services 組織內的許可權。 若要設定同步處理,請使用 Microsoft Entra 連線 技術。
  • 開始匯入工作之前,請先檢查以確定您正在執行 支援的 Azure DevOps Server 版本。
  • 建議您使用 逐步移轉指南 來逐步完成匯入。 本指南連結至技術檔、工具和最佳做法。

驗證集合

驗證您想要移轉至 Azure DevOps Services 的每個集合。 驗證步驟會檢查集合的各個層面,包括但不限於大小、定序、身分識別和程式。

使用資料遷移工具執行驗證。

  1. 下載工具

  2. 將 zip 檔案複製到其中一個 Azure DevOps Server 應用層

  3. 將 檔案解壓縮。 您也可以從未安裝 Azure DevOps Server 的不同機器執行此工具,只要機器可以連線到 Azure DevOps Server 實例的組態資料庫即可。

  4. 開啟伺服器上的 [命令提示字元] 視窗,然後輸入 cd 命令,以變更至儲存資料遷移工具的目錄。 請花點時間檢閱工具的說明內容。

    a. 若要檢視最上層的說明和指引,請執行下列命令:

     Migrator /help
    

    b. 檢視命令的說明文字:

     Migrator validate /help 
    
  5. 當您第一次驗證集合時,讓我們保持簡單。 您的指令應該具有下列結構:

     Migrator validate /collection:{collection URL} /tenantDomainName:{name} /region:{region}
    

    其中 {name} 提供 Microsoft Entra 租使用者的名稱,例如,若要針對 DefaultCollectionfabrikam 租使用者執行,則命令會喜歡下列範例:

     Migrator validate /collection:http://localhost:8080/DefaultCollection /tenantDomainName:fabrikam.OnMicrosoft.com /region:{region}
    
  6. 若要從 Azure DevOps Server 以外的電腦執行此工具,您需要 /connectionString 參數。 連接字串 參數會指向您的 Azure DevOps Server 組態資料庫。 例如,如果 Fabrikam 公司執行已驗證的命令,此命令看起來會像這樣:

     Migrator validate /collection:http://fabrikam:8080/DefaultCollection /tenantDomainName:fabrikam.OnMicrosoft.com /region:{region} /connectionString:"Data Source=fabrikam;Initial Catalog=Configuration;Integrated Security=True"
    

    重要

    數據遷移工具 不會 編輯集合中的任何數據或結構。 它只會讀取集合來識別問題。

  7. 驗證完成後,您可以檢視記錄檔和結果。

    命令提示字元視窗中驗證結果和記錄的螢幕快照。

    在驗證期間,如果某些管線包含每個管線保留規則,您會收到警告。 Azure DevOps Services 會使用 以專案為基礎的保留模型 ,且不支援每個管線保留原則。 如果您繼續進行移轉,則原則不會延續至裝載的版本。 相反地,會套用預設專案層級保留原則。 保留組建對於您而言很重要,以避免其遺失。

所有驗證通過之後,您就可以移至 匯入程式的下一個步驟。 如果數據遷移工具會標幟任何錯誤,請在繼續進行之前加以更正。 如需修正驗證錯誤的指引,請參閱 針對匯入和移轉錯誤進行疑難解答。

匯入記錄檔

當您開啟記錄檔目錄時,您可能會注意到數個記錄檔。

主要記錄檔名為 DataMigrationTool.log。 其中包含已執行之所有專案的詳細數據。 為了讓您更輕鬆地專注於特定區域,記錄會產生每個主要驗證作業。

例如,如果 TfsMigrator 在「驗證項目進程」步驟中報告錯誤,您可以開啟 ProjectProcessMap.log 檔案,以檢視針對該步驟執行的所有專案,而不需要捲動整個記錄檔。

只有在您嘗試匯入項目進程以使用繼承的模型時,才檢閱TryMatchOobProcesses.log檔案。 如果您不想使用繼承的模型,您可以忽略這些錯誤,因為它們不會阻止您匯入 Azure DevOps Services。

產生匯入檔案

數據遷移工具已驗證集合,並傳回「所有已傳遞的集合驗證」的結果。將集合脫機移轉之前,請先產生匯入檔案。 當您執行 命令時 prepare ,會產生兩個匯入檔案:

  • IdentityMapLog.csv:概述 Active Directory 與 Microsoft Entra 標識符之間的身分識別對應。
  • import.json:要求您填寫您想要用來開始移轉的匯入規格。

準備命令

命令 prepare 可協助產生必要的匯入檔案。 基本上,此命令會掃描集合以尋找所有用戶的清單,以填入身分識別對應記錄檔, IdentityMapLog.csv,然後嘗試連線到 Microsoft Entra ID 以尋找每個身分識別的相符專案。 若要這樣做,您的公司必須使用 Microsoft Entra 連線 工具(先前稱為目錄同步處理工具、目錄同步工具或DirSync.exe工具)。

如果設定目錄同步處理,數據遷移工具應該會尋找相符的身分識別,並將其標示為 作用中。 如果沒有相符專案,身分識別會在身分識別對應記錄中標示為 [歷程 記錄],因此您必須調查用戶為何未包含在目錄同步處理中。匯入規格檔案 ,import.json,應該在匯入之前填入。

validate不同於 命令,prepare需要因特網連線,因為它必須連線到 Microsoft Entra ID 以填入身分識別對應記錄檔。 如果您的 Azure DevOps Server 實例沒有因特網存取權,請從執行的機器執行此工具。 只要您可以找到具有 Azure DevOps Server 實例和因特網連線內部網路連線的電腦,您就可以執行此命令。 如需命令的說明 prepare ,請執行下列命令:

Migrator prepare /help

說明檔中包含的指示和範例可從 Azure DevOps Server 實例本身和遠端電腦執行 Migrator 命令。 如果您是從其中一個 Azure DevOps Server 實例應用層執行命令,您的命令應該具有下列結構:

Migrator prepare /collection:{collection URL} /tenantDomainName:{name} /region:{region}
Migrator prepare  /collection:{collection URL} /tenantDomainName:{name} /region:{region} /connectionString:"Data Source={sqlserver};Initial Catalog=Configuration;Integrated Security=True"

connectionString 參數是 Azure DevOps Server 實例組態資料庫的指標。 例如,如果 Fabrikam 公司執行 prepare 命令,此命令看起來會像下列範例:

Migrator prepare /collection:http://fabrikam:8080/DefaultCollection /tenantDomainName:fabrikam.OnMicrosoft.com /region:{region} /connectionString:"Data Source=fabrikam;Initial Catalog=Configuration;Integrated Security=True"

當資料遷移工具執行 prepare 命令時,它會執行完整的驗證,以確保自上次完整驗證之後,您的集合沒有任何變更。 如果偵測到任何新問題,則不會產生任何匯入檔案。

命令開始執行之後不久,就會顯示 Microsoft Entra 登入視窗。 使用屬於租使用者網域的身分識別登入,該身分識別是在 命令中指定的。 請確定指定的 Microsoft Entra 租使用者是您希望未來組織支援的租使用者。 在我們的 Fabrikam 範例中,使用者輸入類似下列範例螢幕快照的認證。

重要

請勿針對測試匯入使用測試 Microsoft Entra 租使用者,而您的生產環境 Microsoft Entra 租使用者則用於實際執行。 當您開始使用組織的生產 Microsoft Entra 租使用者執行生產環境時,使用測試 Microsoft Entra 租使用者可能會導致身分識別匯入問題。

當您在數據遷移工具中成功執行 prepare 命令時,結果視窗會顯示一組記錄和兩個匯入檔案。 在記錄目錄中,尋找logs資料夾和兩個檔案:

  • import.json是匯入規格檔案。 建議您花點時間填寫。
  • IdentityMapLog.csv包含產生的Active Directory與 Microsoft Entra 身分識別的對應。 開始匯入之前,請先檢閱其完整性。

下一節會更詳細地說明這兩個檔案。

匯入規格檔案

匯入規格 import.json是提供匯入設定的 JSON 檔案。 其中包含所需的組織名稱、記憶體帳戶資訊和其他資訊。 大部分欄位都會自動填入,有些字位需要輸入才能嘗試匯入。

新產生的匯入規格檔案螢幕快照。

下表說明import.json檔案的顯示欄位和必要動作:

欄位 描述 必要的動作
來源 用於匯入之源數據檔的位置和名稱的相關信息。 不需要執行任何動作。 檢閱子欄位動作要遵循的資訊。
Location 裝載資料層應用程式套件 (DACPAC) 的 Azure 記憶體帳戶共用存取簽章密鑰。 不需要執行任何動作。 此欄位會在稍後的步驟中說明。
檔案 包含匯入資料的檔名。 不需要執行任何動作。 檢閱子欄位動作要遵循的資訊。
DACPAC DACPAC 檔案,封裝匯入期間要用來帶入數據的集合資料庫。 不需要執行任何動作。 在稍後的步驟中,您會使用您的集合建立此檔案,然後將它上傳至 Azure 儲存器帳戶。 根據您稍後在此程式中產生檔案時所使用的名稱來更新檔案。
Target 要匯入之新組織的屬性。 不需要執行任何動作。 檢閱子欄位動作要遵循的資訊。
名稱 匯入期間要建立的組織名稱。 提供名稱。 匯入完成之後,即可快速變更名稱。
注意在執行匯入之前, 請勿使用此名稱建立組織。 組織會建立為匯入程式的一部分。
ImportType 您要執行的匯入類型。 不需要執行任何動作。 在稍後的步驟中,選取要執行的匯入類型。
驗證數據 協助推動匯入體驗所需的資訊。 數據遷移工具會產生 「ValidationData」 區段。 其中包含可協助推動匯入體驗的資訊。 請勿* 編輯本節中的值,否則您的匯入可能無法啟動。

完成上述程序之後,您應該會有類似下列範例的檔案。

部分完成匯入規格檔案的螢幕快照。

在上圖中,Fabrikam 匯入的規劃工具新增了組織名稱 fabrikam-import,並將選取的 CUS (Central 美國) 新增為匯入的地理位置。 其他值則保留為在規劃工具離線進行移轉之前修改。

注意

「幹執行」匯入會自動附加至組織名稱結尾的 「-dryrun」,您可以在匯入之後變更。

支援的 Azure 地理位置以進行匯入

Azure DevOps Services 可在數個 Azure 地理位置中使用。 但是,不支持匯入 Azure DevOps Services 的所有位置。 下表列出您可以選取以進行匯入的 Azure 地理位置。 此外,也包含您需要在匯入規格檔案中放置的值,以針對該地理位置進行匯入。

地理位置 Azure 地理位置 匯入規格值
美國 中央 美國 CUS
歐洲 西歐 WEU
英國 英國南部 UKS
澳大利亞 澳大利亞東部 EAU
南美洲 巴西南部 Sbr
亞太地區 印度南部 MA
亞太地區 東南亞 (新加坡) SEA
加拿大 加拿大中部 CC

身分識別對應記錄

身分識別對應記錄與您移轉至 Azure DevOps Services 的實際數據同等重要。 當您檢閱檔案時,請務必瞭解身分識別匯入的運作方式,以及可能的結果。 當您匯入身分識別時,它可能會變成 作用中歷程記錄。 作用中身分識別可以登入 Azure DevOps Services,但歷程記錄身分識別無法登入。

使用中身分識別

作用中身分識別是指 Azure DevOps Services 匯入後的使用者身分識別。 在 Azure DevOps Services 中,這些身分識別會獲得授權,並顯示為組織中的使用者。 身分識別會在身分識別對應記錄檔的 [預期匯入狀態] 數據行中標示為作用中。

歷史身分識別

歷程記錄身分識別會對應,例如在識別對應記錄檔的 [預期匯入狀態 ] 數據行中。 檔案中沒有行專案的身分識別也會變成歷程記錄。 沒有行輸入的身分識別範例可能是不再在公司工作的員工。

不同於作用中身分識別,歷史身分識別:

  • 移轉后無法 存取組織。
  • 沒有 授權。
  • 不要 顯示為組織中的使用者。 保存的所有專案都是組織內該身分識別名稱的概念,以便稍後搜尋其歷程記錄。 我們建議您針對不再在公司工作或不需要進一步存取組織的使用者,使用歷程記錄身分識別。

注意

將身分識別匯入為歷程記錄之後,就無法變成作用中。

瞭解身分識別對應記錄檔

身分識別對應記錄檔類似於此處所示的範例:

數據遷移工具所產生的身分識別對應記錄檔螢幕快照。

下表說明身分識別對應記錄檔中的數據行:

您和您的 Microsoft Entra 系統管理員必須調查標示為找不到相符專案的使用者(檢查 Microsoft Entra ID Sync),以了解他們為何不屬於 Microsoft Entra 連線 Sync。

資料行 描述
Active Directory:使用者 (Azure DevOps Server) Azure DevOps Server 中身分識別所使用的易記顯示名稱。 此名稱可讓您更輕鬆地識別對應中線條所參考的使用者。
Active Directory:安全性標識符 Azure DevOps Server 中 內部部署的 Active Directory 身分識別的唯一標識符。 此數據行用來識別集合中的使用者。
Microsoft Entra ID:預期的匯入使用者 (Azure DevOps Services) 相符即將使用中之使用者的預期登入位址或 找不到相符專案 (檢查 Microsoft Entra ID Sync),這表示在 Microsoft Entra ID Sync 期間找不到身分識別,並匯入為歷程記錄。
預期的匯入狀態 預期的使用者匯入狀態: 如果您的 Active Directory 與 Microsoft Entra 標識符之間有相符專案,則為 Active ,如果沒有 相符專案,則為 [歷程記錄 ]。
驗證日期 上次驗證身分識別對應記錄的時間。

當您閱讀檔案時,請注意預期的匯入狀態數據行中的值為 [作用] 或 [歷程記錄]。 作用 中表示此數據列上的身分識別會在匯入時正確對應為作用中。 歷程 記錄表示身分識別在匯入時變成歷史。 請務必檢閱產生的對應檔案,以取得完整性和正確性。

重要

如果您的 Microsoft Entra 發生重大變更,匯入會失敗,連線 匯入嘗試之間的安全性標識符同步。 您可以在執行中新增使用者,而且可以進行更正,以確保先前匯入的歷程記錄身分識別變成作用中。 不過,目前不支援變更先前匯入為作用中的現有使用者。 這樣做會導致匯入失敗。 變更的範例可能是完成試執行匯入、從主動匯入的 Microsoft Entra 標識碼刪除身分識別、針對該相同身分識別重新建立 Microsoft Entra ID 中的新使用者,然後嘗試另一個匯入。 在此情況下,Active Directory 與新建立的 Microsoft Entra 身分識別之間的作用中身分識別匯入嘗試,但會導致匯入失敗。

  1. 檢閱正確相符的身分識別。 所有預期的身分識別都存在嗎? 使用者是否對應至正確的 Microsoft Entra 身分識別?

    如果必須變更任何值,請連絡您的 Microsoft Entra 系統管理員,確認 內部部署的 Active Directory 身分識別是同步處理至 Microsoft Entra 標識符的一部分,且已正確設定。 如需詳細資訊,請參閱 整合內部部署身分識別與 Microsoft Entra ID

  2. 接下來,檢閱標示為 歷程記錄的身分識別。 此標籤表示找不到相符的 Microsoft Entra 身分識別,原因如下:

    • 身分識別未設定為 內部部署的 Active Directory 與 Microsoft Entra ID 之間的同步處理。
    • 您的 Microsoft Entra 識別碼中尚未填入身分識別(例如,有新員工)。
    • 身分識別不存在於您的 Microsoft Entra 實例中。
    • 擁有該身分識別的使用者不再在公司工作。

若要解決前三個原因,請設定預期的 內部部署的 Active Directory 身分識別,以與 Microsoft Entra 標識符同步。 如需詳細資訊,請參閱 整合內部部署身分識別與 Microsoft Entra ID。 您必須設定並執行 Microsoft Entra 連線,才能在 Azure DevOps Services 中將身分識別匯入為作用中。

您可以忽略第四個原因,因為不再在公司的員工應該匯入為 歷程記錄

歷史身份(小團隊)

注意

本節中提議的身分識別匯入策略應該只由小型小組考慮。

如果未設定 Microsoft Entra 連線,則身分識別對應記錄檔中的所有用戶都會標示為歷程記錄。 以這種方式執行匯入會導致所有用戶匯入為歷程記錄 強烈建議您設定 Microsoft Entra 連線,以確保您的使用者已匯入為使用中狀態。

執行具有所有歷程記錄身分識別的匯入會產生需要仔細考慮的結果。 只有少數使用者且設定 Microsoft Entra 連線 成本過高的小組才應該考慮。

若要將所有身分識別匯入為歷程記錄,請遵循後續各節中所述的步驟。 當您將匯入排入佇列時,用來將匯入排入佇列的身分識別會以組織擁有者身分載入組織。 所有其他用戶都會匯入為歷程記錄。 接著 ,組織擁有者可以使用其 Microsoft Entra 身分識別,將使用者新增回 去。 新增的使用者會被視為新使用者。 他們不擁有任何歷史,也沒有辦法將這段歷程記錄重新代為 Microsoft Entra 身分識別。 不過,使用者仍然可以藉由搜尋其網域><Active Directory 用戶名稱>來查閱其<預先匯入歷程記錄。

如果數據遷移工具偵測到完整的歷程記錄身分識別案例,就會顯示警告。 如果您決定前往此移轉路徑,則必須在工具中同意限制。

Visual Studio 訂閱

數據遷移工具在產生身分識別對應記錄檔時,無法偵測Visual Studio訂用帳戶(先前稱為MSDN權益)。 相反地,建議您在匯入之後套用自動授權升級功能。 只要使用者的工作帳戶 正確連結 ,Azure DevOps Services 就會在匯入后的第一次登入時自動套用其Visual Studio 訂用帳戶權益。 您永遠不會針對匯入期間指派的授權收費,因此您可以在之後安全地處理訂用帳戶。

如果使用者的 Visual Studio 訂用帳戶未在 Azure DevOps Services 中自動升級,就不需要重複執行中的匯入。 Visual Studio 訂用帳戶連結會在匯入範圍之外發生。 只要在匯入之前或之後正確連結其工作帳戶,用戶授權就會在其下一次登入時自動升級。 成功升級其授權之後,下次執行匯入時,使用者就會在其第一次登入組織時自動升級。

準備匯入

現在您已準備好在匯入上執行所有專案。 排程小組的停機時間,讓集合脫機進行移轉。 當您同意執行匯入的時間時,請將您產生的必要資產和資料庫的複本上傳至 Azure。 準備匯入包含下列五個步驟。

步驟 1: 讓集合離線並中斷連結

DACPAC 方法的集合大小限制為 150 GB。 如果數據遷移工具顯示您無法使用 DACPAC 方法的警告,則必須使用 SQL Azure 虛擬機 (VM) 方法來執行匯入。 在該案例中略過步驟 2 到 5,並遵循匯入大型集合中提供的指示,然後繼續區段判斷匯入類型

步驟 2: 從您要匯入的集合產生 DACPAC 檔案。
步驟 3: 將 DACPAC 檔案上傳並匯入檔案至 Azure 記憶體帳戶
步驟 4: 產生 SAS 令牌以存取記憶體帳戶
步驟 5: 完成匯入規格

注意

執行生產匯入之前,強烈建議您完成試執行匯入。 透過試執行,您可以驗證匯入程式是否適用於您的集合,而且沒有可能導致生產匯入失敗的唯一數據圖形。

步驟 1:中斷連結您的集合

中斷連結集合 是匯入程式中的重要步驟。 集合的身分識別數據位於 Azure DevOps Server 實例的組態資料庫中,而集合則附加並上線。 當集合與 Azure DevOps Server 實例中斷連結時,它會擷取該身分識別數據的複本,並將它與集合封裝以用於傳輸。 如果沒有此數據,就無法執行匯入的識別部分。 建議您讓集合保持中斷連結,直到匯入完成為止,因為匯入期間沒有匯入所發生變更的方法。

針對試執行 (test) 匯入,建議您在備份集合以進行匯入之後重新附加集合,因此您並不擔心有這種類型的匯入的最新數據。 若要避免完全離線時間,您也可以選擇使用 來進行乾燥執行。

請務必權衡選擇在乾燥執行時產生零停機時間的成本。 它需要建立集合和組態資料庫的備份、在 SQL 實例上還原它們,然後建立中斷連結的備份。 成本分析可能證明,只需要幾個小時的停機時間就能直接取得中斷連結的備份,最終會更好。

步驟 2:產生 DACPAC 檔案

DACPAC 提供快速且相對容易的方法,可將集合移至 Azure DevOps Services。 不過,在集合資料庫大小超過特定閾值之後,使用 DACPAC 的優點會開始減少。

注意

如果數據遷移工具顯示您無法使用 DACPAC 方法的警告,則必須使用匯入大型集合提供的 SQL Azure 虛擬機 (VM) 方法來執行匯入。

如果數據遷移工具未顯示警告,請使用此步驟中所述的 DACPAC 方法。

DACPAC 是 SQL Server 的功能,可讓資料庫封裝成單一檔案,並部署到 SQL Server 的其他實例。 DACPAC 檔案也可以直接還原至 Azure DevOps Services,因此您可以使用它作為封裝方法,以在雲端中取得集合的數據。

重要

  • 當您使用 SqlPackage.exe時,必須使用 .NET Framework 版本的 SqlPackage.exe 來準備 DACPAC。 MSI 安裝程式必須用來安裝 .NET Framework 版本的 SqlPackage.exe。 請勿使用 dotnet CLI 或 .zip (Windows .NET 6) 版本的 SqlPackage.exe,因為這些版本可能會產生與 Azure DevOps Services 不相容的 DACPAC。
  • 根據預設,SqlPackage 161 版會加密資料庫連線,而且可能不會連線。 如果您收到登入進程錯誤,請將 新增;Encrypt=False;TrustServerCertificate=True至 SqlPackage 語句的 連接字串。

使用 SqlPackage 版本資訊的最新 MSI 安裝程式下載並安裝SqlPackage.exe。

使用 MSI 安裝程式之後,SqlPackage.exe安裝路徑類似 %PROGRAMFILES%\Microsoft SQL Server\160\DAC\bin\

當您產生 DACPAC 時,請記住兩個考慮:DACPAC 儲存的磁碟,以及產生 DACPAC 之電腦上的磁碟空間。 您要確保有足夠的磁碟空間來完成作業。

建立封裝時,SqlPackage.exe暫時將集合中的數據儲存在您起始封裝要求的機器 C 磁碟驅動器 C 上的暫存目錄中。

您可能會發現磁碟驅動器 C 太小,無法支援建立 DACPAC。 您可以藉由尋找集合資料庫中的最大數據表來估計所需的空間量。 DACPAC 會一次建立一個數據表。 執行產生的最大空間需求大致相當於集合資料庫中最大數據表的大小。 如果您將產生的 DACPAC 儲存為磁碟驅動器 C,請考慮從驗證執行DataMigrationTool.log檔案中所回報的集合資料庫大小。

DataMigrationTool.log檔案會在每次執行命令時,提供集合中最大的數據表清單。 如需集合的數據表大小範例,請參閱下列輸出。 比較最大數據表的大小與裝載暫存目錄之磁碟驅動器上的可用空間。

重要

在繼續產生 DACPAC 檔案之前,請確定您的集合已 中斷連結

[Info   @08:23:59.539] Table name                               Size in MB
[Info   @08:23:59.539] dbo.tbl_Content                          38984
[Info   @08:23:59.539] dbo.tbl_LocalVersion                     1935
[Info   @08:23:59.539] dbo.tbl_Version                          238
[Info   @08:23:59.539] dbo.tbl_FileReference                    85
[Info   @08:23:59.539] dbo.Rules                                68
[Info   @08:23:59.539] dbo.tbl_FileMetadata                     61

請確定裝載您暫存目錄的磁碟驅動器至少有一樣多的可用空間。 如果沒有,您必須藉由設定環境變數來重新導向暫存目錄。

SET TEMP={location on disk}

另一個考慮是儲存 DACPAC 資料的位置。 將儲存位置指向遠距遠端磁碟驅動器可能會導致產生時間更長。 如果在本機提供固態硬碟 (SSD) 等快速磁碟驅動器,建議您將磁碟驅動器作為 DACPAC 儲存位置的目標。 否則,使用位於集合資料庫所在計算機上的磁碟,而不是遠端磁碟驅動器,一律會比較快。

既然您已識別 DACPAC 的目標位置,並確定您有足夠的空間,就可以產生 DACPAC 檔案。

開啟 [命令提示字元] 視窗,並移至SqlPackage.exe位置。 若要產生 DACPAC,請將佔位元值取代為必要值,然後執行下列命令:

SqlPackage.exe /sourceconnectionstring:"Data Source={database server name};Initial Catalog={Database Name};Integrated Security=True" /targetFile:{Location & File name} /action:extract /p:ExtractAllTableData=true /p:IgnoreUserLoginMappings=true /p:IgnorePermissions=true /p:Storage=Memory
  • 數據源:裝載 Azure DevOps Server 集合資料庫的 SQL Server 實例。
  • 初始目錄:集合資料庫的名稱。
  • targetFile:磁碟上的位置和 DACPAC 檔名。

在 Azure DevOps Server 數據層本身上執行的 DACPAC 產生命令,如下列範例所示:

SqlPackage.exe /sourceconnectionstring:"Data Source=localhost;Initial Catalog=Foo;Integrated Security=True" /targetFile:C:\DACPAC\Foo.dacpac /action:extract /p:ExtractAllTableData=true /p:IgnoreUserLoginMappings=true /p:IgnorePermissions=true /p:Storage=Memory

命令的輸出是從名為 Foo.dacpac 的集合資料庫 Foo 產生的 DACPAC 檔案。

設定要匯入的集合

在 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>'

在 Fabrikam 範例之後,這兩個 SQL 命令看起來會像下列範例:

ALTER DATABASE [Foo] SET RECOVERY SIMPLE;

USE [Foo]
CREATE LOGIN fabrikam WITH PASSWORD = 'fabrikamimport1!'
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 實例的相關信息。 開啟您的匯入規格檔案,並進行下列更新。

  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 進行匯入。 繼續進行其餘準備步驟,以匯入至 Azure DevOps Services。 匯入完成後,請務必刪除 SQL 登入或輪替密碼。 Microsoft 不會在匯入完成後保留登入資訊。

步驟 3:上傳 DACPAC 檔案

注意

如果您使用 SQL Azure VM 方法,則只需要提供 連接字串。 您不需要上傳任何檔案,而且可以略過此步驟。

DACPAC 必須放在 Azure 記憶體容器中,它可以是現有的容器,或專為移轉工作建立的容器。 請務必確定您的容器是在正確的地理位置中建立的。

Azure DevOps Services 可在多個 地理位置使用。 當您匯入這些位置時,請務必正確放置您的數據,以確保匯入可以順利啟動。 您的數據必須放在您要匯入的相同地理位置。 將數據放在其他地方會導致匯入無法啟動。 下表列出建立記憶體帳戶及上傳數據可接受的地理位置。

所需的匯入地理位置 儲存體 帳戶地理位置
中央 美國 中央 美國
西歐 西歐
英國 英國南部
澳大利亞東部 澳大利亞東部
巴西南部 巴西南部
印度南部 印度南部
加拿大中部 加拿大中部
亞太地區(新加坡) 亞太地區(新加坡)

雖然 Azure DevOps Services 位於美國的多個地理位置,但只有 Central 美國 位置接受新的 Azure DevOps Services。 您目前無法將數據匯入其他美國 Azure 位置。

您可以從 Azure 入口網站 建立 Blob 容器。 建立容器之後,請上傳集合 DACPAC 檔案。

匯入完成後,請刪除 Blob 容器,並隨附記憶體帳戶與使用 AzCopy 或任何其他 Azure 記憶體總管工具等工具,例如 Azure 儲存體 Explorer

注意

如果您的 DACPAC 檔案大於 10 GB,建議您使用 AzCopy。 AzCopy 具有多線程上傳支援,可加快上傳速度。

步驟 4:產生 SAS 令牌

共用存取簽章 (SAS) 令牌提供對記憶體帳戶中資源的委派存取權。 令牌可讓您為 Microsoft 提供存取數據以執行匯入所需的最低許可權層級。

您可以使用 Azure 入口網站 產生 SAS 令牌。 從安全性觀點來看,我們建議:

  1. 選取 [讀取 ] 和 [列出 ] 作為 SAS 令牌的許可權。 不需要其他許可權。
  2. 設定到期時間不超過未來七天的時間。
  3. 限制對 Azure DevOps Services IP 的存取。
  4. 將 SAS 令牌放在安全的位置。

步驟 5:完成匯入規格

稍早在程式中,您部分填寫了匯入規格檔案,稱為 import.json。 此時,您有足夠的資訊可以完成匯入類型以外的所有其餘欄位。 稍後會在匯入區段中討論匯入類型。

在import.json規格檔案的 [來源] 下,完成下列欄位。

  • 位置:貼上您從腳本產生的 SAS 金鑰,然後在上一個步驟中複製。
  • Dacpac:請確定檔案,包括 .dacpac 擴展名,與您上傳至記憶體帳戶的 DACPAC 檔案同名。

最後的匯入規格檔案看起來應該像下列範例。

已完成匯入規格檔案的螢幕快照。

僅限制對 Azure DevOps Services IP 的存取

如需詳細資訊,請參閱 限制對 Azure DevOps Services IP 的存取。

選項 1:使用服務標籤

您可以透過入口網站或以程序設計方式,將服務標籤新增azuredevops至網路安全組或防火牆,輕鬆地允許來自所有 Azure DevOps Services 地理位置的連線。

選項 2:使用 IpList

IpList使用 命令來取得需要授與存取權的IP清單,以允許來自特定 Azure DevOps Services 地理位置的連線。

說明檔中包含從 Azure DevOps Server 實例本身和遠端電腦執行移轉程式的指示和範例。 如果您是從其中一個 Azure DevOps Server 實例應用層執行命令,您的命令應該具有下列結構:

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

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

判斷匯入類型

匯入可以排入佇列,做為幹執行或生產執行。 ImportType 參數會決定匯入類型:

  • DryRun:針對測試目的使用試執行。 系統會在 21 天後刪除執行。
  • ProductionRun:當您想要保留產生的匯入,並在匯入完成之後,於 Azure DevOps Services 中全職使用組織時,請使用生產執行。

提示

我們一律建議您先完成試執行匯入。

已完成具有匯入類型的匯入規格檔案

試運行組織

「試執行匯入」可協助小組測試其集合的移轉。 組織預計不會永遠留在周圍,而是短暫存在。 事實上,執行生產移轉之前,必須先刪除任何已完成的試執行組織。 所有執行中的組織都有 有限的存在,而且會在一段一段時間后自動刪除。 當組織被刪除時的相關信息包含在成功電子郵件中,您應該在匯入完成後收到。 請務必記下此日期並據以規劃。

大部分的幹運行組織在刪除前 15 天。 如果超過 100 位使用者在匯入時擁有基本或更大的授權 ,則執行中的組織也可以有 21 天的到期日。 在指定的時間週期之後,會刪除執行中的組織。 在進行生產移轉之前,您可以視需要重複執行中的匯入次數。 您必須先刪除任何先前的試執行,再嘗試新的執行。 當小組準備好執行生產移轉時,您必須手動刪除執行中的組織。

如需匯入后活動的詳細資訊,請參閱 匯入后 文章。

如果您遇到任何匯入問題,請參閱 針對匯入和移轉錯誤進行疑難解答。

執行匯入

您的小組現在已準備好開始執行匯入的程式。 建議您先從成功的試執行匯入開始,再嘗試生產環境執行匯入。 透過試執行匯入,您可以事先查看匯入的外觀、找出潛在問題,以及在進入生產執行之前取得經驗。

注意

  • 如果您需要針對集合重複完成的生產執行匯入,就像復原時一樣,請先連絡 Azure DevOps Services 客戶支援 ,再將另一個匯入排入佇列。
  • Azure 系統管理員可以防止使用者建立新的 Azure DevOps 組織。 如果開啟 Microsoft Entra 租用戶原則,您的匯入將無法完成。 開始之前,請確認原則未設定,或執行移轉的使用者有例外狀況。 如需詳細資訊,請參閱 限制透過 Microsoft Entra 租用戶原則建立組織。
  • Azure DevOps Services 不支援每個管線保留原則,而且不會傳遞至裝載的版本。

復原計劃的考慮

對於執行最終生產回合的小組來說,常見的問題在於,如果匯入發生任何問題,則其復原計劃。 強烈建議執行試運行,以確保您可以測試您提供給 Azure DevOps 數據遷移工具的匯入設定。

最終生產執行的復原相當簡單。 將匯入排入佇列之前,您會將Team專案集合與 Azure DevOps Server 中斷連結,讓小組成員無法使用。 如果您需要復原生產執行,並讓內部部署伺服器重新上線,讓小組成員上線,您可以這麼做。 再次附加小組專案集合,並通知您的小組,他們繼續正常運作,而您的小組會重新群組以瞭解任何潛在的失敗。

將匯入佇列

重要

繼續之前,請先確定您的集合在產生 DACPAC 檔案之前已 中斷連結 ,或將集合資料庫上傳至 SQL Azure VM。 如果您未完成此步驟,匯入將會失敗。 如果匯入失敗,請參閱 針對匯入和移轉錯誤進行疑難解答。

使用資料遷移工具的 匯入命令啟動匯 入。 import 命令會採用匯入規格檔案作為輸入。 它會剖析檔案,以確保所提供的值有效,如果成功,則會將匯入至 Azure DevOps Services 的佇列。 匯入命令需要因特網連線,但不需要連線到您的 Azure DevOps Server 實例。

若要開始使用,請開啟 [命令提示字元] 視窗,並將目錄變更為數據遷移工具的路徑。 建議您檢閱工具所提供的說明文字。 執行下列命令以查看匯入命令的指引和說明:

Migrator import /help

將匯入排入佇列的命令具有下列結構:

Migrator import /importFile:{location of import specification file}

下列範例顯示已完成的匯入命令:

Migrator import /importFile:C:\DataMigrationToolFiles\import.json

驗證通過之後,系統會要求您登入 Microsoft Entra ID。 請務必使用身分識別來登入,該身分識別是與建立身分識別對應記錄檔相同的 Microsoft Entra 租用戶成員。 登入的用戶是匯入組織的擁有者。

注意

每個 Microsoft Entra 租使用者限制為每 24 小時五次匯入。 僅針對此上限排入佇列計數的匯入。

當小組起始匯入時,會將電子郵件通知傳送給排入佇列的使用者。 在將匯入排入佇列大約 5 到 10 分鐘後,您的小組可以前往組織檢查狀態。 匯入完成後,您的小組會導向登入,並將電子郵件通知傳送給組織擁有者。