Eseguire la migrazione di database su larga scala usando l'automazione (anteprima)

L'estensione Migrazione SQL di Azure per Azure Data Studio riunisce un'esperienza semplificata di valutazione, raccomandazione e migrazione che offre le funzionalità seguenti:

  • Un meccanismo di valutazione avanzato può valutare le istanze di SQL Server, identificando i database pronti per la migrazione alle diverse destinazioni SQL di Azure.
  • Un motore di raccomandazione SKU (anteprima) che raccoglie i dati sulle prestazioni dall'istanza di SQL Server di origine in locale, generando raccomandazioni di SKU di dimensioni corrette in base alla destinazione SQL di Azure.
  • Un servizio di Azure affidabile basato su Servizio Migrazione del database di Azure che orchestra le attività di spostamento dei dati per offrire un'esperienza di migrazione senza problemi.
  • Possibilità di eseguire online (per le migrazioni che richiedono tempi di inattività minimi) o offline (per le migrazioni in cui il tempo di inattività persiste attraverso la migrazione) per soddisfare i requisiti aziendali.
  • La flessibilità necessaria per creare e configurare un runtime di integrazione self-hosted per fornire risorse di calcolo personalizzate per l'accesso all'istanza di SQL Server di origine e ai backup nell'ambiente locale.

Con strumenti di automazione come powerShell - Modulo del servizio Azure DataMigration o interfaccia della riga di comando di Azure, è possibile applicare le funzionalità dell'estensione Migrazione SQL di Azure insieme a Servizio Migrazione del database di Azure per eseguire la migrazione di uno o più database su larga scala (inclusi i database in più istanze di SQL Server).

È possibile fare riferimento agli script di esempio seguenti per soddisfare lo scenario di migrazione usando Azure PowerShell o l'interfaccia della riga di comando di Azure:

Scenario di migrazione Linguaggio di scripting
Valutazione di SQL Server Interfaccia della riga di comando di Azure di PowerShell /
Da SQL Server a Istanza gestita di SQL di Azure (tramite condivisione file) Interfaccia della riga di comando di Azure di PowerShell /
Da SQL Server a Istanza gestita di SQL di Azure (con Archiviazione di Azure) Interfaccia della riga di comando di Azure di PowerShell /
DA SQL Server a SQL Server in Azure Macchine virtuali (tramite condivisione file) Interfaccia della riga di comando di Azure di PowerShell /
DA SQL Server a SQL Server in Azure Macchine virtuali (tramite Archiviazione di Azure) Interfaccia della riga di comando di Azure di PowerShell /
Da SQL Server a database SQL di Azure Interfaccia della riga di comando di Azure di PowerShell /
Raccomandazioni per gli SKU (anteprima) Interfaccia della riga di comando di Azure di PowerShell /
Automazione della migrazione end-to-end Interfaccia della riga di comando di Azure di PowerShell /
Automazione della migrazione end-to-end per più database Interfaccia della riga di comando di Azure di PowerShell /

Prerequisiti

I prerequisiti comuni in tutti gli scenari di migrazione supportati tramite Azure PowerShell o l'interfaccia della riga di comando di Azure sono:

  • Avere un account Azure assegnato a uno dei ruoli predefiniti elencati di seguito:

    • Collaboratore per il Istanza gestita di SQL di Azure di destinazione, SQL Server in Azure Macchine virtuali o database SQL di Azure e Archiviazione account per caricare i file di backup del database dalla condivisione di rete SMB (non applicabile per database SQL di Azure).
    • Ruolo lettore per i gruppi di risorse di Azure contenenti il Istanza gestita di SQL di Azure di destinazione, SQL Server in Azure Macchine virtuali o database SQL di Azure.
    • Ruolo proprietario o Collaboratore per la sottoscrizione di Azure.

    Importante

    L'account Azure è necessario solo quando si eseguono i passaggi di migrazione e non è necessario per la valutazione o il processo di raccomandazione di Azure.

  • Creare un Istanza gestita di SQL di Azure di destinazione, SQL Server in una macchina virtuale di Azure o database SQL di Azure

    Importante

    Se la destinazione è database SQL di Azure è necessario eseguire la migrazione dello schema del database dall'origine alla destinazione usando l'estensione dacpac di SQL Server o database SQL l'estensione Progetti per Azure Data Studio.

    Se si dispone di una macchina virtuale di Azure esistente, deve essere registrata con l'estensione SQL IaaS Agent in modalità di gestione completa.

  • Se la destinazione è Istanza gestita di SQL di Azure o SQL Server nella macchina virtuale di Azure, assicurarsi che gli account di accesso usati per connettere l'istanza di SQL Server di origine siano membri del ruolo del server sysadmin o dispongano CONTROL SERVER dell'autorizzazione.

  • Se la destinazione è database SQL di Azure, assicurarsi che l'account di accesso usato per connettere l'istanza di SQL Server di origine sia un membro e che l'account db_datareader di accesso per il server SQL di destinazione sia db_owner.

  • Usare una delle opzioni di archiviazione seguenti per i file di backup completi del database e del log delle transazioni:

    • Condivisione di rete SMB
    • Condivisione file o contenitore BLOB dell'account di archiviazione di Azure

    Importante

    • Se i file di backup del database vengono forniti in una condivisione di rete SMB, creare un account di archiviazione di Azure che consenta al servizio Servizio Migrazione del database di caricare i file di backup del database. Assicurarsi di creare l'account di archiviazione di Azure nella stessa area in cui viene creata l'istanza di Servizio Migrazione del database di Azure.
    • Assicurarsi che il contenitore BLOB dell'account di archiviazione di Azure venga usato esclusivamente per archiviare solo i file di backup. Qualsiasi altro tipo di file (txt, png, jpg e così via) interferisce con il processo di ripristino che causa un errore.
    • Servizio Migrazione del database di Azure non avvia alcun backup, ma usa i backup esistenti, che potrebbero già fare parte del piano di ripristino di emergenza, per la migrazione.
    • Ogni backup può essere scritto in un file di backup separato o in più file di backup. Tuttavia, l'aggiunta di più backup (completo e log delle transazioni) in un singolo supporto di backup non è supportata.
    • Usare i backup compressi per ridurre la probabilità di riscontrare potenziali problemi associati alla migrazione di backup di grandi dimensioni.
  • Assicurarsi che l'account del servizio che esegue l'istanza di SQL Server di origine disponga delle autorizzazioni di lettura e scrittura per la condivisione di rete SMB che contiene i file di backup del database.

  • Prima di eseguire la migrazione dei dati, è necessario eseguire la migrazione del certificato dell'istanza di SQL Server di origine da un database protetto da Transparent Data Encryption (TDE) al Istanza gestita di SQL di Azure di destinazione o a SQL Server nella macchina virtuale di Azure. Per altre informazioni sulla migrazione di database abilitati per TDE, vedere Esercitazione: Eseguire la migrazione di database abilitati per TDE (anteprima) ad Azure SQL in Azure Data Studio.

    Suggerimento

    Se il database contiene dati sensibili protetti da Always Encrypted, il processo di migrazione tramite Azure Data Studio con Servizio Migrazione del database eseguirà automaticamente la migrazione delle chiavi Always Encrypted al Istanza gestita di SQL di Azure di destinazione o SQL Server nella macchina virtuale di Azure.

  • Se i backup del database si trovano in una condivisione file di rete, fornire un computer per installare il runtime di integrazione self-hosted per accedere ed eseguire la migrazione dei backup del database. I moduli di Azure PowerShell o dell'interfaccia della riga di comando di Azure forniscono le chiavi di autenticazione per registrare il runtime di integrazione self-hosted. In preparazione per la migrazione, assicurarsi che il computer in cui si prevede di installare il runtime di integrazione self-hosted disponga delle regole del firewall in uscita e dei nomi di dominio seguenti abilitati:

    Nomi di dominio Porte in uscita Descrizione
    Cloud pubblico: {datafactory}.{region}.datafactory.azure.net
    o *.frontend.clouddatahub.net
    Azure per enti pubblici:{datafactory}.{region}.datafactory.azure.us
    Cina: {datafactory}.{region}.datafactory.azure.cn
    443 Richiesto dal runtime di integrazione self-hosted per connettersi al servizio Migrazione dati.
    Per la nuova data factory creata nel cloud pubblico, individuare il nome di dominio completo dalla chiave del runtime di integrazione self-hosted, in formato {datafactory}.{region}.datafactory.azure.net. Per la data factory precedente, se non viene visualizzato il nome di dominio completo nella chiave di integrazione self-hosted, usare invece *.frontend.clouddatahub.net.
    download.microsoft.com 443 Richiesta dal runtime di integrazione self-hosted per il download degli aggiornamenti. Se l'aggiornamento automatico è stato disabilitato, è possibile evitare di configurare questo dominio.
    *.core.windows.net 443 Usato dal runtime di integrazione self-hosted che si connette all'account di archiviazione di Azure per caricare i backup del database dalla condivisione di rete

    Suggerimento

    Se i file di backup del database sono già disponibili in un account di archiviazione di Azure, il runtime di integrazione self-hosted non è necessario durante il processo di migrazione.

  • Quando si usa il runtime di integrazione self-hosted, assicurarsi che il computer in cui è installato il runtime possa connettersi all'istanza di SQL Server di origine e alla condivisione file di rete in cui si trovano i file di backup.

  • La porta in uscita 445 deve essere abilitata per accedere alla condivisione file di rete.

  • Se si usa il Servizio Migrazione del database di Azure per la prima volta, assicurarsi che il provider di risorse Microsoft.DataMigration sia registrato nella sottoscrizione. È possibile seguire la procedura per registrare il provider di risorse

    Importante

    Se la destinazione di migrazione è database SQL di Azure, non sono necessari backup per eseguire questa migrazione. La migrazione a database SQL di Azure è considerata una migrazione logica che comporta la pre-creazione e lo spostamento dei dati del database (eseguito dal Servizio Migrazione del database).

Automatizzare le migrazioni di database

Usando Azure PowerShell Az.DataMigration o l'interfaccia della riga di comando di Azure az datamigration, è possibile eseguire la migrazione dei database automatizzando la creazione del Servizio Migrazione del database di Azure, la configurazione delle migrazioni di database per la migrazione online e l'esecuzione di un cutover. Sono disponibili diversi altri comandi e funzionalità documentati in Esempi di Azure.

Esempio di automazione della migrazione di un database di SQL Server tramite l'interfaccia della riga di comando di Azure: Passaggio 1: Creare Servizio Migrazione del database di Azure, che orchestra le attività di migrazione del database.

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

Passaggio 2: Configurare e avviare la migrazione del database online da SQL Server locale (con backup in Archiviazione di Azure) a Istanza gestita di SQL di Azure.

#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

Passaggio 3: Eseguire un cutover della migrazione dopo che tutti i backup vengono ripristinati in Istanza gestita di SQL di Azure.

#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

Se viene visualizzato l'errore "La sottoscrizione non è registrata per l'uso dello spazio dei nomi "Microsoft.DataMigration". Per https://aka.ms/rps-not-found informazioni su come registrare le sottoscrizioni, eseguire il comando seguente:

   Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"

Passaggi successivi

  • Per la documentazione di riferimento di Azure PowerShell per le migrazioni di database di SQL Server, vedere Az.DataMigration.
  • Per la documentazione di riferimento dell'interfaccia della riga di comando di Azure per le migrazioni di database di SQL Server, vedere az datamigration.
  • Per il repository di codice di esempi di Azure, vedere data-migration-sql