使用自動化作業大規模移轉資料庫 (預覽版)
適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組結合了簡化的評量、建議和移轉體驗,可提供下列功能:
增強的評量機制可以評估 SQL Server 執行個體,識別準備好移轉至不同 Azure SQL 目標的資料庫。
SKU 建議引擎 (預覽版) 會根據您的 Azure SQL 目標,從內部部署的來源 SQL Server 執行個體收集效能資料,並產生合適大小的 SKU 建議。
一個採取 Azure 資料庫移轉服務技術的可靠 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 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 資料庫移轉服務不會起始任何備份,而是會使用現有備份 (您可能已在災害復原方案中備妥)。
每個備份都可寫入至個別的備份檔案或多個備份檔案。 不過,不支援將多個備份 (即完整與交易記錄) 附加到單一備份媒體。
您可以使用壓縮的備份,以減少移轉大型備份檔時可能發生的潛在問題。
請確定執行來源 SQL Server 執行個體的服務帳戶具有 SMB 網路共用 (其中包含資料庫備份檔案) 的讀取和寫入權限。
若資料庫受透明資料加密 (TDE) 保護,來源 Azure SQL 受控執行個體憑證必須先移轉至目標 Azure SQL 受控執行個體或 Azure 虛擬機器上的 SQL Server,才能移轉資料。 如需移轉已啟用 TDE 的資料庫的詳細資訊,請參閱 教學課程:在 Azure Data Studio 中將已啟用 TDE 的資料庫 (預覽版) 移轉至 Azure SQL。
提示
如果您的資料庫包含受 Always Encrypted 保護的敏感性資料,使用 Azure Data Studio 搭配 DMS 的移轉程序,會自動將您的 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="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"