共用方式為


使用自動化作業大規模移轉資料庫

適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組結合了簡化的評量、建議和移轉體驗,可提供下列功能:

  • 增強的評量機制可以評估 SQL Server 執行個體,識別準備好移轉至不同 Azure SQL 目標的資料庫。

  • SKU 建議引擎,可從內部部署的來源 SQL Server 執行個體收集效能資料,並根據您的 Azure SQL 目標產生大小適當的 SKU 建議。

  • 一個採取 Azure Database Migration Service 技術的可靠 Azure 服務,它可協調資料移動活動以提供無縫順暢的移轉體驗。

  • 可根據您的業務需求,執行線上 (適用於需要最短停機時間的移轉) 或離線 (適用於移轉過程中會持續停機的移轉) 移轉模式。

  • 具備彈性,可建立和設定自我裝載整合執行階段,提供您自己的運算以存取內部部署環境中的來源 SQL Server 和備份。

透過 PowerShell - Azure DataMigration 服務模組Azure CLI 等自動化工具,您可以同時套用 Azure SQL 移轉延伸模組與 Azure 資料庫移轉服務的功能,大規模移轉一或多個資料庫 (包括跨多個 SQL Server 執行個體的資料庫)。

您可以使用 Azure PowerShell 或 Azure CLI,根據自己的移轉案例參考下列範例指令碼:

移轉案例 指令碼語言
SQL Server 評量 PowerShell / Azure CLI
將 SQL Server 移轉至 Azure SQL 受控執行個體 (使用檔案共用) PowerShell / Azure CLI
將 SQL Server 移轉至 Azure SQL 受控執行個體 (使用 Azure 儲存體) PowerShell / Azure CLI
將 SQL Server 移轉到 Azure 虛擬機器上的 SQL Server (使用檔案共用) PowerShell / Azure CLI
將 SQL Server 移轉到 Azure 虛擬機器上的 SQL Server (使用 Azure 儲存體) PowerShell / Azure CLI
SQL Server 至 Azure SQL Database PowerShell / Azure CLI
SKU 建議 PowerShell / Azure CLI
端對端移轉自動化 PowerShell / Azure CLI
多個資料庫的端對端移轉自動化 PowerShell / Azure CLI

先決條件

使用 Azure PowerShell 或 Azure CLI 的所有支援移轉案例中常見的必要條件如下:

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

    • 目標 Azure SQL 受控執行個體、Azure 虛擬機上的 SQL Server 或 Azure SQL Database 的參與者,以及儲存體帳戶,以從 SMB 網路共用上傳您的資料庫備份檔案 (不適用於 Azure SQL Database)。

    • Azure 資源群組的讀取者角色,其中包含目標 Azure SQL 受控執行個體、Azure 虛擬機器上的 SQL Server 或 Azure SQL Database。

    • Azure 訂用帳戶的擁有者或參與者角色。

    只有在執行移轉步驟且不需要評量或 Azure 建議步驟流程時,才需要 Azure 帳戶。

  • 建立目標 Azure SQL 受控執行個體Azure 虛擬機器上的 SQL Server,或 Azure SQL Database

    如果您的目標是 Azure SQL Database,您必須使用 SQL Server dacpac 延伸模組,或適用於 Azure Data Studio 的 SQL Database Projects 延伸模組,將資料庫結構描述從來源移轉至目標。

    如果您有現有的 Azure 虛擬機,則應該以完整管理模式將其註冊至 SQL Server IaaS 代理程式延伸模組

  • 如果您的目標是 Azure SQL 受控執行個體Azure 虛擬機器上的 SQL Server,請確定用來連接來源 SQL Server 的登入資料是sysadmin 伺服器角色的成員或具有 CONTROL SERVER 權限。

  • 如果您的目標是 Azure SQL Database,請確定用來連線來源 SQL Server 的登入資料為成員,且 db_datareader 和目標 SQL Server 的登入資料為 db_owner

  • 針對完整資料庫和交易記錄備份檔案,使用下列其中一個儲存體選項:

    • SMB 網路共用

    • Azure 儲存體帳戶檔案共用或 Blob 容器

      • 如果您的資料庫備份檔案是在 SMB 網路共用中提供,請建立 Azure 儲存體帳戶,允許 DMS 服務上傳資料庫備份檔案。 請務必在建立 Azure 資料庫移轉服務執行個體的相同區域中建立 Azure 儲存體帳戶。

      • 請務必僅使用 Azure 儲存體帳戶 Blob 容器來儲存備份檔案。 任何其他檔案類型 (.txt.png.jpg等) 都會干擾還原程序,導致失敗。

      • Azure 資料庫移轉服務不會起始任何備份,而是使用現有的備份 (您可能已在災害復原計劃中擁有備份) 進行移轉。

      • 每個備份都可寫入至個別的備份檔案或多個備份檔案。 不過,不支援將多個備份 (也就是完整備份和 t-log) 附加至單一備份媒體。

      • 您可以使用壓縮的備份,以減少移轉大型備份檔時可能發生的潛在問題。

  • 請確定執行來源 SQL Server 執行個體的服務帳戶具有 SMB 網路共用 (其中包含資料庫備份檔案) 的讀取和寫入權限。

  • 在移轉資料之前,必須先將受透明資料加密 (TDE) 保護之資料庫的來源 SQL Server 執行個體憑證移轉至目標 Azure SQL 受控執行個體或 Azure 虛擬機器上的 SQL Server。 如需移轉已啟用 TDE 的資料庫的詳細資訊,請參閱教學課程:在 Azure Data Studio 中將已啟用 TDE 的資料庫移轉至 Azure SQL (預覽)

    秘訣

    如果您的資料庫包含受 Always Encrypted 保護的敏感性資料,移轉程式會自動將您的 Always Encrypted 金鑰移轉至目標 Azure SQL 受控執行個體或 Azure 虛擬機器上的 SQL Server。

  • 如果您的資料庫備份位於網路檔案共用中,請提供機器來安裝自我裝載整合執行階段,用於存取和移轉資料庫備份。 Azure PowerShell 或 Azure CLI 模組會提供驗證金鑰讓您註冊自我裝載整合執行階段。 準備移轉時,請確定您要安裝自我裝載整合執行階段的機器上,已啟用下列輸出防火牆規則和網域名稱:

    網域名稱 輸出連接埠 描述
    公用雲端:{datafactory}.{region}.datafactory.azure.net
    *.frontend.clouddatahub.net
    Azure Government:{datafactory}.{region}.datafactory.azure.us
    中國:{datafactory}.{region}.datafactory.azure.cn
    443 必須提供此資訊,自我裝載整合執行階段才能連線到資料移轉服務。
    針對公用雲端中新建立的 Data Factory,請從您的自我裝載整合執行階段金鑰中找到 FQDN,其格式為 {datafactory}.{region}.datafactory.azure.net。 針對舊版 Data Factory,如果您在自我裝載整合金鑰中沒有看到 FQDN,請改用 *.frontend.clouddatahub.net。
    download.microsoft.com 443 自我裝載整合執行階段所需,以用於下載更新。 如果您停用了自動更新,則可以略過設定此網域。
    *.core.windows.net 443 供連線到 Azure 儲存體帳戶的自我裝載整合執行階段用來從網路共用上傳資料庫備份

    如果已在 Azure 儲存體帳戶中提供您的資料庫備份檔案,則移轉流程進行期間不需要自我裝載整合執行階段。

  • 使用自我裝載整合執行階段時,請確定安裝該執行階段的機器可以連線到來源 SQL Server 執行個體,以及備份檔案所在的網路檔案共用。

  • 應啟用輸出埠 445 以存取網路檔案共用。

  • 如果您第一次使用 Azure 資料移轉服務,請確定 Microsoft.DataMigration 資源提供者已在您的訂用帳戶中註冊。 您可以依照註冊資源提供者的步驟操作

    如果您的移轉目標是 Azure SQL Database (預覽版),那麼您不需要備份就能執行此移轉。 移轉至 Azure SQL 資料庫會被視為邏輯移轉,涉及資料庫的預先建立和資料移動 (由 DMS 執行)。

自動化資料庫移轉作業

您可以使用 Az.DataMigration 或 Azure CLI az datamigration,將建立 Azure 資料移轉服務、將資料庫移轉設定為線上移轉,以及執行完全移轉的作業自動化,藉此移轉資料庫。 Azure 範例中另外提供多個命令和功能。

使用 Azure CLI 自動化移轉 SQL Server 資料庫的範例:

步驟 1:建立 Azure 資料庫移轉服務,以協調資料庫的移轉活動。

#STEP 1: Create Database Migration Service
az datamigration sql-service create --resource-group "myRG" --sql-migration-service-name "myMigrationService" --location "EastUS2"

步驟 2:從內部部署 SQL Server (備份位於 Azure 儲存體中) 設定並開始於線上將資料庫移轉至 Azure SQL 受控執行個體。

#STEP 2: Start Migration
az datamigration sql-managed-instance create `
--source-location '{\"AzureBlob\":{\"storageAccountResourceId\":\"/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/dbbackupssqlbits\",\"accountKey\":\"myAccountKey\",\"blobContainerName\":\"dbbackups\"}}' `
--migration-service "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.DataMigration/SqlMigrationServices/myMigrationService" `
--scope "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Sql/managedInstances/mySQLMI" `
--source-database-name "AdventureWorks2008" `
--source-sql-connection authentication="SqlAuthentication" data-source="mySQLServer" password="<password>" user-name="sqluser" `
--target-db-name "AdventureWorks2008" `
--resource-group myRG `
--managed-instance-name mySQLMI

步驟 3:將所有備份還原至 Azure SQL 受控執行個體後執行完全移轉。

#STEP 3: Get migration ID and perform Cutover
$migOpId = az datamigration sql-managed-instance show --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --expand=MigrationStatusDetails --query "properties.migrationOperationId"
az datamigration sql-managed-instance cutover --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --migration-operation-id $migOpId

如果您收到錯誤 The subscription is not registered to use namespace 'Microsoft.DataMigration'. See https://aka.ms/rps-not-found for how to register subscriptions.,請執行下列命令:

Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"