使用自動化大規模移轉資料庫 (預覽)

適用于 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 Service Module 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
AZURE 虛擬機器上的 SQL Server 至 SQL Server (使用檔案共用) PowerShell / Azure CLI
AZURE 虛擬機器上的 SQL Server 到 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 資料庫,儲存體帳戶從 SMB 網路共用上傳您的資料庫備份檔案( 不適用於 Azure SQL 資料庫 )。
    • Azure 資源群組的讀者角色,其中包含目標Azure SQL 受控執行個體、Azure 虛擬機器上的 SQL Server 或 Azure SQL 資料庫。
    • Azure 訂用帳戶的擁有者或參與者角色。

    重要

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

  • 在 Azure 虛擬機器 Azure SQL 資料庫上建立目標 Azure SQL 受控執行個體 、 SQL Server

    重要

    如果您的目標是 Azure SQL 資料庫您必須使用 SQL Server dacpac 擴充功能 ,將資料庫架構從來源移轉至目標, 或SQL 資料庫 Azure Data Studio 的 Projects 擴充功能

    如果您有現有的 Azure 虛擬機器,則應該以完整管理模式 SQL IaaS 代理程式擴充功能註冊。

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

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

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

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

    重要

    • 如果您的資料庫備份檔案是在 SMB 網路共用中提供, 請建立可讓 DMS 服務上傳資料庫備份檔案的 Azure 儲存體帳戶 。 請務必在建立與Azure 資料移轉服務實例相同的區域中建立Azure 儲存體帳戶。
    • 請確定僅使用 Azure 儲存體帳戶 Blob 容器來儲存備份檔案。 任何其他類型的檔案(txt、png、jpg 等)都會干擾導致失敗的還原程式。
    • Azure 資料移轉服務不會起始任何備份,而是使用您可能已經擁有的現有備份作為移轉災害復原計畫的一部分。
    • 每個備份都可寫入至個別的備份檔案或多個備份檔案。 不過,不支援將多個備份 (即完整與交易記錄) 附加到單一備份媒體。
    • 使用壓縮備份來降低與移轉大型備份相關聯的潛在問題的可能性。
  • 請確定執行來源 SQL Server 實例的服務帳戶具有包含資料庫備份檔案之 SMB 網路共用的讀取和寫入權限。

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

    提示

    如果您的資料庫包含受 Always Encrypted 保護的敏感性資料,則搭配 DMS 使用 Azure Data Studio 的移轉程式會自動將您的 Always Encrypted 金鑰移轉至 Azure 虛擬機器上的目標Azure SQL 受控執行個體或 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 資料庫,則不需要備份來執行此移轉。 移轉至 Azure SQL 資料庫被視為邏輯移轉,涉及資料庫的預先建立和資料移動(由 DMS 執行)。

自動化資料庫移轉

您可以使用 Azure PowerShell 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="myPassword" 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

如果您收到錯誤 「訂用帳戶未註冊為使用命名空間 'Microsoft.DataMigration'。如需如何註冊訂用帳戶, 請參閱 https://aka.ms/rps-not-found 下列命令:

   Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"

下一步