共用方式為


教學課程:將 SQL Server 移轉至 Azure SQL Database (離線)

您可以透過適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組或 Azure 入口網站,使用 Azure 資料庫移轉服務,將資料庫從 SQL Server 的內部部署實例移轉至 Azure SQL Database(離線)。

在本教學課程中,瞭解如何使用資料庫移轉服務,將範例 AdventureWorks2022 資料庫從 SQL Server 的內部部署實例移轉至 Azure SQL Database。 本教學課程使用離線移轉模式,這會在移轉程序期間考慮可接受的停機。

在本教學課程中,您會了解如何:

  • 在 Azure Data Studio 中開啟 [移轉至 Azure SQL 精靈]
  • 執行來源 SQL Server 資料庫的評量
  • 從來源 SQL Server 執行個體收集效能資料
  • 取得最適合您工作負載的 Azure SQL Database SKU 建議
  • 建立 Azure 資料庫移轉服務的執行個體
  • 開始移轉並監視完成進度

重要

目前,Azure SQL Database 目標 的在線 移轉不適用於 Azure 資料庫移轉服務。 在離線移轉中,當移轉開始時,應用程式即會開始停機。 建議測試離線移轉,以判斷是否可接受的停機時間。

移轉選項

下一節說明如何使用 Azure 資料庫移轉服務搭配 Azure SQL 移轉延伸模組,或在 Azure 入口網站中使用。

必要條件

若要完成本教學課程,您需要下列必要條件:

  • 下載及安裝 Azure Data Studio

  • 從 Azure Data Studio Marketplace 安裝 Azure SQL 移轉延伸模組

  • 請確定您的訂用帳戶中已註冊 Microsoft.DataMigration 資源提供者

  • 擁有指派給下列其中一個內建角色的 Azure 帳戶:

    • 目標 Azure SQL Database 的參與者
    • 包含目標 Azure SQL Database 之 Azure 資源群組的讀者角色
    • Azure 訂閱的擁有者或參與者角色 (如果您建立新的 Azure 資料庫移轉服務執行個體,則需要)

    除了使用這些其中一個內建角色,您也可以指派自訂角色

    重要

    只有在您設定移轉步驟時,才需要 Azure 帳戶。 評估或在 Azure Data Studio 的移轉精靈中檢視 Azure 建議時不需要 Azure 帳戶。

  • 建立目標 Azure SQL 資料庫

  • 請確定連接到來源 SQL Server 實例的 SQL Server 登入是 db_datareader 角色的成員,而目標 SQL Server 實例的登入是 db_owner 角色的成員。

  • 若要使用資料庫移轉服務,將資料庫架構從來源移轉至目標 Azure SQL Database,最低支援的 SHIR 版本 為 5.37 或更新版本。

  • 針對架構移轉,來源 SQL Server 的最低許可權 是db_owner 存取資料庫,而目標 Azure SQL Database 上,用戶應該是下表中所有 伺服器層級角色 的成員:

角色 描述
##MS_DatabaseManager## ##MS_DatabaseManager## 固定伺服器角色的成員可以建立和刪除資料庫。 建立資料庫的 ##MS_DatabaseManager## 角色成員會成為該資料庫的擁有者,這可讓使用者以 dbo 使用者身分連接到該資料庫。 dbo 使用者具有資料庫的所有資料庫權限。 ##MS_DatabaseManager## 角色的成員不一定有權存取他們不擁有的資料庫。 建議將此伺服器角色用於存在於資料庫中的 master 資料庫層級角色。
##MS_DatabaseConnector## ##MS_DatabaseConnector## 固定伺服器角色的成員可以連線到任何資料庫,而不需要資料庫中的用戶帳戶才能連線。
##MS_DefinitionReader## ##MS_DefinitionReader## 固定伺服器角色的成員可以讀取此角色成員具有使用者帳戶的任何資料庫所涵蓋VIEW ANY DEFINITION的所有目錄檢視。
##MS_LoginManager## ##MS_LoginManager## 固定伺服器角色的成員可以建立和刪除登入。 建議將此伺服器角色用於存在於資料庫中的 master資料庫層級角色。

準備目標 Azure SQL Database

若要在目標 Azure SQL Database 上建立登入和使用者,請在資料庫上 master 執行下列腳本:

CREATE LOGIN testuser WITH PASSWORD = '<password>';

ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_DatabaseManager## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_LoginManager## ADD MEMBER [testuser];
GO

CREATE USER testuser FOR LOGIN testuser;
EXECUTE sp_addRoleMember 'dbmanager', 'testuser';
EXECUTE sp_addRoleMember 'loginmanager', 'testuser';

現在,您可以使用資料庫移轉服務來移轉資料庫架構和數據。 您也可以在選取要移轉的數據表清單之前,先使用其他工具,例如 SQL Server dacpac 擴充功能 或 Azure Data Studio 中的 SQL Database Projects 延伸模組 來移轉架構。

注意

如果 Azure SQL Database 目標上沒有任何數據表存在,或在開始移轉之前未選取任何數據表,則 [ 下一步 ] 按鈕無法起始移轉。 如果目標上沒有任何數據表存在,您必須選取架構移轉選項以繼續進行。

在 Azure Data Studio 中開啟 [移轉至 Azure SQL 精靈]

若要開啟 [移轉至 Azure SQL 精靈]:

  1. 在 Azure Data Studio 中,移至 [連線]。 選取並連線至 SQL Server 的內部部署執行個體。 您也可以連線至 Azure 虛擬機器上的 SQL Server。

  2. 以滑鼠右鍵按兩下伺服器連線,然後選取 [ 管理]:

    顯示 Azure Data Studio 中伺服器連線和 [管理] 選項的螢幕快照。

  3. 在伺服器功能表中的 [一般] 下,選取[Azure SQL 移轉]

    顯示 Azure Data Studio 伺服器功能表的螢幕擷取畫面。

  4. 在 [Azure SQL 移轉] 儀表板中,選取 [移轉至 Azure SQL] 以開啟移轉精靈。

    顯示移轉至 Azure SQL 精靈的螢幕擷取畫面。

  5. 在精靈的第一頁上,啟動新的工作階段或繼續先前儲存的工作階段。

執行資料庫評量、收集效能資料,以及取得 Azure 建議

  1. 在 [移轉至 Azure SQL 精靈] 的 [步驟 1: 要評量的資料庫] 中,選取您要評量的資料庫。 然後選取下一步

    顯示選取資料庫以進行評定的螢幕擷取畫面。

  2. 在 [步驟 2: 評量結果和建議] 中,完成下列步驟:

    1. 在 [選擇您的 Azure SQL 目標] 中,選取 [Azure SQL Database]

      顯示選取的 Azure SQL 資料庫目標的螢幕擷取畫面。

    2. 選取 [檢視/選取] 以檢視評量結果。

      顯示檢視/選取評定結果的螢幕擷取畫面。

    3. 在評量結果中,選取資料庫,然後檢閱評量報告,以確定找不到任何問題。

      顯示評定報告的螢幕擷取畫面。

    4. 選取 [取得 Azure 建議] 以開啟 [建議] 窗格。

      顯示 Azure 建議的螢幕擷取畫面。

    5. 選取 [立即收集效能資料]。 選取本機電腦上的資料夾以儲存效能記錄,然後選取 [開始]

      顯示效能資料收集的螢幕擷取畫面。

      Azure Data Studio 會收集效能資料,直到您停止資料收集或關閉 Azure Data Studio 為止。

      10 分鐘之後,Azure Data Studio 會指出可用於 Azure SQL Database 的建議。 產生第一個建議之後,您可以選取 [重新開始資料收集] 以繼續資料收集程序並精簡 SKU 建議。 如果您的使用模式隨著時間而有所不同,延伸評量會特別有用。

      顯示所收集效能資料的螢幕擷取畫面。

    6. 在選取的 [Azure SQL Database] 目標中,選取 [檢視詳細資料] 以開啟詳細的 SKU 建議報告:

      顯示目標資料庫建議之 [檢視詳細資料] 連結的螢幕擷取畫面。

    7. Azure SQL Database 建議上,檢閱建議。 若要儲存建議的複本,請選取 [儲存建議報告]

      顯示 SKU 建議詳細資料的螢幕擷取畫面。

  3. 選取 [關閉] 以關閉 [建議] 窗格。

  4. 選取 [下一步] 以繼續精靈中的資料庫移轉。

進行移轉設定

  1. 步驟 3:移轉至 Azure SQL 精靈中的 Azure SQL 目標 中,完成目標 Azure SQL Database 實例的下列步驟:

    1. 選取您的 Azure 帳戶、Azure 訂用帳戶、Azure 區域或位置,以及包含 Azure SQL Database 部署的資源群組。

      顯示 Azure 帳戶詳細資料的螢幕擷取畫面。

    2. [Azure SQL Database Server] 下,選取目標邏輯 Azure SQL Database 伺服器。 輸入目標資料庫部署的使用者名稱和密碼。 然後,選取 [連線]。 輸入認證以驗證對目標資料庫的連線能力。

      顯示 Azure SQL 資料庫詳細資料的螢幕擷取畫面。

    3. 接下來,對應來源資料庫和用於移轉的目標資料庫。 針對 [目標資料庫],選取 [Azure SQL Database] 目標。 然後,選取 [下一步] 以移至移轉精靈中的下一個步驟。

      顯示來源和目標對應的螢幕擷取畫面。

  2. 在 [步驟 4: 移轉模式] 中,選取 [離線移轉],然後選取 [下一步]

    顯示離線移轉選取範圍的螢幕擷取畫面。

  3. 在 [步驟 5: 資料來源設定] 中,完成下列步驟:

    1. 在 [來源認證] 下,輸入來源 SQL Server 認證。

    2. 在 [選取資料表] 下,選取 [編輯] 鉛筆圖示。

      顯示來源 SQL Server 認證的螢幕擷取畫面。

    3. 在 [選取 <database-name> 的資料表] 中,選取要移轉至目標的資料表。 [有資料列] 資料行指出目標資料表是否具有目標資料庫中的資料列。 您可以選取一或多個資料表。 然後,選取 [更新]

      您可以在開始移轉之前隨時更新選取的資料表清單。

      在下列範例中,文字篩選會套用至包含文字 Employee 的資料表。 根據您的移轉需求選取資料表的清單。

      顯示資料表選取的螢幕擷取畫面。

  4. 檢閱您的資料表選取項目,然後選取 [下一步] 以移至移轉精靈中的下一個步驟。

    顯示要移轉之所選資料表的螢幕擷取畫面。

注意

如果未選取任何資料表,或未輸入使用者名稱和密碼,則無法選取 [下一步] 按鈕。

現在,您可以使用資料庫移轉服務來移轉資料庫結構描述和資料。 此外,您也可以在選取要移轉的資料表清單之前,先使用 SQL Server dacpac 延伸模組或 Azure Data Studio 中的 SQL Database Projects 延伸模組等工具來移轉結構描述。

建立資料庫移轉服務執行個體

在移轉至 Azure SQL 精靈中的步驟 6:Azure 資料庫移轉服務中,建立新的資料庫移轉服務執行個體,或重複使用您稍早建立的現有執行個體。

注意

如果您先前已使用 Azure 入口網站建立資料庫移轉服務執行個體,則無法在 Azure Data Studio 的移轉精靈中重複使用執行個體。 只有在您使用 Azure Data Studio 建立執行個體時,才能重複使用執行個體。

使用現有的資料庫移轉服務執行個體

若要使用現有的資料庫移轉服務執行個體:

  1. 在 [資源群組] 中,選取包含現有資料庫移轉服務執行個體的資源群組。

  2. Azure 資料庫移轉服務中,選取所選資源群組中現有的資料庫移轉服務執行個體。

  3. 選取 [下一步]。

    顯示資料庫移轉服務選取的螢幕擷取畫面。

建立資料庫移轉服務的新執行個體

若要建立資料庫移轉服務的新執行個體:

  1. 在 [資源群組] 中,建立新的資源群組,以包含資料庫移轉服務的新執行個體。

  2. 在 [Azure 資料庫移轉服務] 底下,選取 [新建]

  3. 在 [建立 Azure 資料庫移轉服務] 中,輸入資料庫移轉服務執行個體的名稱,然後選取 [建立]

  4. 在 [設定整合執行階段] 底下,完成下列步驟:

    1. 選取 [下載並安裝整合執行階段] 連結,以在網頁瀏覽器中開啟下載連結。 下載整合執行階段,然後將其安裝在符合連線至來源 SQL Server 執行個體必要條件的電腦上。

      顯示 [下載並安裝整合執行階段] 連結的螢幕擷取畫面。

      安裝完成時,Microsoft Integration Runtime Configuration Manager 會自動開啟以開始註冊程序。

    2. 在 [驗證金鑰] 資料表中,複製精靈中提供的其中一個驗證金鑰,並將其貼到 Azure Data Studio 中。

      醒目提示精靈中驗證金鑰資料表的螢幕擷取畫面。

      如果驗證金鑰有效,Integration Runtime Configuration Manager 中會出現綠色核取圖示。 綠色核取記號表示您可以繼續註冊

      註冊自我裝載整合執行階段之後,請關閉 Microsoft Integration Runtime Configuration Manager。

      注意

      如需自我裝載整合執行階段的詳細資訊,請參閱建立和設定自我裝載整合執行階段

  5. 在在 Azure Data Studio 中的 [建立 Azure 資料庫移轉服務] 中,選取 [測試連線],以驗證新建立的資料庫移轉服務執行個體是否已連線至新註冊的自我裝載整合執行階段。

    顯示 IR 連線測試的螢幕擷取畫面。

  6. 返回 Azure Data Studio 中的移轉精靈。

開始資料庫移轉

在 [移轉至 Azure SQL 精靈] 中的 [步驟 7: 摘要] 中,檢閱您建立的設定,然後選取 [開始移轉] 以開始資料庫移轉。

顯示如何開始移轉的螢幕擷取畫面。

監視資料庫移轉

  1. 在 Azure Data Studio 的 [一般] 下方的伺服器功能表中,選取 [Azure SQL 移轉] 以移至 Azure SQL Database 移轉的儀表板。

    [資料庫移轉狀態] 下,您可以追蹤進行中、已完成和失敗的移轉 (如果有),也可以檢視所有資料庫移轉。

    顯示監視移轉儀表板的螢幕擷取畫面。

  2. 選取進行中的資料庫移轉,以檢視作用中的移轉。

    若要取得特定移轉的詳細資訊,請選取資料庫名稱。

    顯示資料移轉詳細資料的螢幕擷取畫面。

    資料庫移轉服務會在每次移轉狀態重新整理時傳回最新的已知移轉狀態。 下表描述可能的狀態:

    狀態 描述
    準備複製 服務正在停用目標資料表中的自動統計資料、觸發程序和索引。
    複製中 正在從來源資料庫將資料複製到目標資料庫。
    複製已完成 資料複製已完成。 服務正在等候其他資料表完成複製,以開始最後的步驟,將資料表傳回其原始結構描述。
    重建索引 服務正在重建目標資料表上的索引。
    已成功 所有資料都會複製並重建索引。
  3. 檢查移轉詳細資料頁面,以檢視每個資料庫的目前狀態。

    以下是具有AdventureWorks2022正在建立狀態的 資料庫移轉範例:

    顯示建立移轉狀態的螢幕擷取畫面。

  4. 在功能表列中,選取 [重新整理] 以更新移轉狀態。

    重新整理移轉狀態之後,範例 AdventureWorks2022 資料庫移轉的更新狀態為進行中

    顯示進行中移轉狀態的螢幕擷取畫面。

  5. 選取資料庫名稱以開啟資料表檢視。 在此檢視中,您會看到移轉的目前狀態、目前處於該狀態的資料表數目,以及每個資料表的詳細狀態。

    顯示監視資料表移轉的螢幕擷取畫面。

    將所有資料表資料移轉至 Azure SQL Database 目標時,資料庫移轉服務會將移轉狀態從進行中更新為成功

    顯示成功移轉的螢幕擷取畫面。

注意

資料庫移轉服務會跳過沒有資料 (0 個資料列) 的資料表來最佳化移轉。 沒有資料的資料表不會出現在清單中,即使您在建立移轉時選取那些資料表也一樣。

您已完成移轉至 Azure SQL Database。 我們鼓勵您完成一系列移轉後工作,以確保所有功能順暢且有效率地運作。

重要

請務必充分運用 Azure SQL Database 中的進階雲端式功能。 這些功能包括內建高可用性威脅偵測,以及監視和微調您的工作負載

限制

Azure SQL Database 離線移轉會利用 Azure Data Factory (ADF) 管線來移動資料,因而遵守 ADF 限制。 建立資料庫移轉服務時,也會建立對應的 ADF。 因此,每個服務都適用處理站限制。

  • 安裝 SHIR 所在的電腦可作為移轉的計算。 請確定此電腦可以處理該資料複本的 CPU 和記憶體負載。 若要深入了解,請檢閱建立和設定自我裝載整合執行階段
  • 每個資料庫 100,000 個資料表限制。
  • 每個服務 10,000 個同時資料庫移轉。
  • 移轉速度高度取決於目標 Azure SQL 資料庫 SKU 和自我裝載整合執行階段。
  • Azure SQL Database 移轉因開始活動造成的 ADF 額外負荷,調整資料表數量的效能不佳。 如果資料庫有數千個資料表,則每個資料表的啟動程序可能需要幾秒鐘的時間,即使它們是由一個具有 1 位元資料的資料列組成也一樣。
  • 目前不支援移轉具有雙位元組字元的 Azure SQL Database 資料表名稱。 風險降低措施是在移轉之前將資料表重新命名;成功移轉後,便可變更回其原始名稱。
  • 具有大型 Blob 資料行的資料表可能會因為逾時而無法移轉。
  • 目前不支援 SQL Server 保留的資料庫名稱。
  • 目前不支援包含分號的資料庫名稱。
  • 不會移轉計算資料行。
  • 源資料庫中具有默認條件約束和包含 NULL 值的數據行會以其在目標 Azure SQL 資料庫上定義的預設值進行移轉,而不是保留 NUL。