Esercitazione: Eseguire la migrazione di SQL Server a database SQL di Azure tramite Servizio Migrazione del database (versione classica)

Importante

Servizio Migrazione del database di Azure (versione classica): gli scenari SQL si trovano in un percorso di deprecazione. Dal 1° agosto 2023 non è più possibile creare nuove risorse di Servizio Migrazione del database (versione classica) per gli scenari di SQL Server da portale di Azure. Il servizio verrà ritirato il 15 marzo 2026 per tutti i clienti. Per le migrazioni senza problemi da più origini di database alle destinazioni SQL di Azure, Microsoft consiglia di usare la versione più recente di Servizio Migrazione del database di Azure, disponibile come Migrazione SQL di Azure come estensione in Azure Data Studio o tramite il portale di Azure o tramite Azure PowerShell e l'interfaccia della riga di comando di Azure. Per altre informazioni, vedere Avviso di ritiro: Servizio Migrazione del database (versione classica).

Nota

Questa esercitazione usa una versione precedente del Servizio Migrazione del database di Azure. Per migliorare le funzionalità e il supporto, valutare la possibilità di eseguire la migrazione a database SQL di Azure usando l'estensione di migrazione SQL di Azure per Azure Data Studio.

Per confrontare le funzionalità tra le versioni, vedere Confrontare le versioni.

È possibile usare il Servizio Migrazione del database di Azure per eseguire la migrazione dei database da un'istanza di SQL Server a Database SQL di Azure. In questa esercitazione si esegue la migrazione del database AdventureWorks2016 ripristinato in un'istanza locale di SQL Server 2016 (o versione successiva) a un database singolo o in pool in database SQL di Azure usando Servizio Migrazione del database di Azure.

Si apprenderà come:

  • Esaminare e valutare il database locale per individuare eventuali problemi bloccanti tramite Data Migration Assistant.
  • Usare Data Migration Assistant per eseguire la migrazione dello schema di esempio del database.
  • Registrare il provider di risorse Azure DataMigration.
  • Creare un'istanza del servizio Migrazione del database di Azure.
  • Creare un progetto di migrazione tramite il Servizio Migrazione del database di Azure.
  • Eseguire la migrazione.
  • Monitorare la migrazione.

Prerequisiti

Per completare questa esercitazione, è necessario:

  • Scaricare e installare SQL Server 2016 o versione successiva.

  • Abilitare il protocollo TCP/IP, che viene disabilitato per impostazione predefinita durante l'installazione di SQL Server Express, seguendo le istruzioni riportate nell'articolo Abilitare o disabilitare un protocollo di rete del server.

  • Ripristinare il database AdventureWorks2016 nell'istanza di SQL Server.

  • Creare un database in Database SQL di Azure, seguendo la procedura descritta nell'articolo Creare un database in Database SQL di Azure con il portale di Azure. Ai fini di questa esercitazione, si presuppone che il nome del database SQL di Azure sia AdventureWorksAzure, ma è possibile specificare il nome che si preferisce.

    Nota

    Se si usa SQL Server Integration Services (SSIS) e si intende eseguire la migrazione del database di catalogo per i progetti/pacchetti SSIS (SSISDB) da SQL Server al database SQL di Azure, il database SSISDB di destinazione verrà creato e gestito automaticamente per conto dell'utente quando si esegue il provisioning di SSIS in Azure Data Factory (ADF). Per altre informazioni sulla migrazione dei pacchetti SSIS, vedere l'articolo Eseguire la migrazione di pacchetti SQL Server Integration Services in Azure.

  • Scaricare e installare l'ultima versione di Data Migration Assistant.

  • Creare una rete virtuale di Microsoft Azure per il servizio Migrazione del database di Azure usando il modello di distribuzione Azure Resource Manager, che offre la connettività da sito a sito per i server di origine locali con ExpressRoute o VPN. Per altre informazioni sulla creazione di una rete virtuale, vedere la documentazione sulla rete virtuale e in particolare gli articoli di avvio rapido con istruzioni dettagliate.

    Nota

    Durante la configurazione della rete virtuale, se si usa ExpressRoute con il peering di rete per Microsoft, aggiungere gli endpoint servizio seguenti alla subnet in cui verrà effettuato il provisioning del servizio:

    • Endpoint del database di destinazione (ad esempio endpoint SQL, endpoint di Azure Cosmos DB e così via)
    • Endpoint di archiviazione
    • Endpoint bus di servizio

    Questa configurazione è necessaria perché il Servizio Migrazione del database di Azure non ha connettività Internet.

    Se non si ha connettività da sito a sito tra la rete locale e Azure o se è presente una larghezza di banda limitata da sito a sito, è consigliabile usare Servizio Migrazione del database di Azure in modalità ibrida (anteprima). Con la modalità ibrida si usa un ruolo di lavoro della migrazione locale unitamente a un'istanza del Servizio Migrazione del database di Azure in esecuzione nel cloud. Per creare un'istanza del Servizio Migrazione del database di Azure in modalità ibrida, vedere l'articolo Creare un'istanza del Servizio Migrazione del database di Azure in modalità ibrida con il portale di Azure.

  • Assicurarsi che le regole di sicurezza in uscita del gruppo di sicurezza di rete virtuale non blocchino la porta in uscita 443 di ServiceTag per ServiceBus, Archiviazione e AzureMonitor. Per informazioni dettagliate sul filtro del traffico dei gruppi di sicurezza di rete della rete virtuale di Azure, vedere l'articolo Filtrare il traffico di rete con gruppi di sicurezza di rete.

  • Configurare Windows Firewall per l'accesso al motore di database.

  • Aprire il firewall in Windows per consentire Servizio Migrazione del database di Azure di accedere all'istanza di SQL Server di origine, che per impostazione predefinita è la porta TCP 1433. Se l'istanza predefinita è in ascolto su un'altra porta, aggiungerla al firewall.

  • Se si eseguono più istanze di SQL Server denominate usando porte dinamiche, è possibile abilitare il servizio SQL Browser e consentire l'accesso alla porta UDP 1434 tramite i firewall in modo che Servizio Migrazione del database di Azure possa connettersi a un'istanza denominata nel server di origine.

  • Quando si usa un'appliance firewall davanti ai database di origine, potrebbe essere necessario aggiungere regole del firewall per consentire Servizio Migrazione del database di Azure di accedere ai database di origine per la migrazione.

  • Creare una regola del firewall IP a livello del server per Database SQL di Azure per consentire al Servizio Migrazione del database di Azure di accedere ai database di destinazione. Specificare l'intervallo di subnet della rete virtuale usato per il Servizio Migrazione del database di Azure.

  • Assicurarsi che le credenziali usate per connettersi all'istanza di origine di SQL Server abbiano le autorizzazioni CONTROL SERVER.

  • Assicurarsi che le credenziali usate per connettersi all'istanza di Database SQL di Azure di destinazione abbiano l'autorizzazione CONTROL DATABASE nei database di destinazione.

    Importante

    La creazione di un'istanza di Servizio Migrazione del database di Azure richiede l'accesso alle impostazioni di rete virtuale che normalmente non si trovano nello stesso gruppo di risorse. Di conseguenza, l'utente che crea un'istanza del Servizio Migrazione del database richiede l'autorizzazione a livello di sottoscrizione. Per creare i ruoli necessari, che è possibile assegnare in base alle esigenze, eseguire lo script seguente:

    
    $readerActions = `
    "Microsoft.Network/networkInterfaces/ipConfigurations/read", `
    "Microsoft.DataMigration/*/read", `
    "Microsoft.Resources/subscriptions/resourceGroups/read"
    
    $writerActions = `
    "Microsoft.DataMigration/services/*/write", `
    "Microsoft.DataMigration/services/*/delete", `
    "Microsoft.DataMigration/services/*/action", `
    "Microsoft.Network/virtualNetworks/subnets/join/action", `
    "Microsoft.Network/virtualNetworks/write", `
    "Microsoft.Network/virtualNetworks/read", `
    "Microsoft.Resources/deployments/validate/action", `
    "Microsoft.Resources/deployments/*/read", `
    "Microsoft.Resources/deployments/*/write"
    
    $writerActions += $readerActions
    
    # TODO: replace with actual subscription IDs
    $subScopes = ,"/subscriptions/00000000-0000-0000-0000-000000000000/","/subscriptions/11111111-1111-1111-1111-111111111111/"
    
    function New-DmsReaderRole() {
    $aRole = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
    $aRole.Name = "Azure Database Migration Reader"
    $aRole.Description = "Lets you perform read only actions on DMS service/project/tasks."
    $aRole.IsCustom = $true
    $aRole.Actions = $readerActions
    $aRole.NotActions = @()
    
    $aRole.AssignableScopes = $subScopes
    #Create the role
    New-AzRoleDefinition -Role $aRole
    }
    
    function New-DmsContributorRole() {
    $aRole = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
    $aRole.Name = "Azure Database Migration Contributor"
    $aRole.Description = "Lets you perform CRUD actions on DMS service/project/tasks."
    $aRole.IsCustom = $true
    $aRole.Actions = $writerActions
    $aRole.NotActions = @()
    
      $aRole.AssignableScopes = $subScopes
    #Create the role
    New-AzRoleDefinition -Role $aRole
    }
    
    function Update-DmsReaderRole() {
    $aRole = Get-AzRoleDefinition "Azure Database Migration Reader"
    $aRole.Actions = $readerActions
    $aRole.NotActions = @()
    Set-AzRoleDefinition -Role $aRole
    }
    
    function Update-DmsConributorRole() {
    $aRole = Get-AzRoleDefinition "Azure Database Migration Contributor"
    $aRole.Actions = $writerActions
    $aRole.NotActions = @()
    Set-AzRoleDefinition -Role $aRole
    }
    
    # Invoke above functions
    New-DmsReaderRole
    New-DmsContributorRole
    Update-DmsReaderRole
    Update-DmsConributorRole
    

Valutare il database locale

Prima di eseguire la migrazione dei dati da un'istanza di SQL Server a un database singolo o in pool in Database SQL di Azure, è necessario valutare il database di SQL Server per rilevare eventuali problemi che potrebbero causare un blocco e impedire la migrazione. Usando Data Migration Assistant, seguire la procedura descritta nell'articolo Eseguire una valutazione della migrazione a SQL Server per completare la valutazione del database locale. Di seguito è riportato un riepilogo dei passaggi necessari:

  1. In Data Migration Assistant selezionare l'icona Nuovo (+) e quindi selezionare il tipo di progetto Valutazione.

  2. Specificare un nome di progetto. Nell'elenco a discesa Tipo di valutazione selezionare motore di database, nella casella di testo Tipo server di origine selezionare SQL Server, nella casella di testo Tipo di server di destinazione selezionare database SQL di Azure e quindi selezionare Crea per creare il progetto.

    Quando si valuta il database di SQL Server di origine per la migrazione a un database singolo o in pool in Database SQL di Azure, si può scegliere uno o entrambi i tipi di report di valutazione seguenti:

    • Verifica la compatibilità del database
    • Verifica parità delle funzionalità

    Entrambi i tipi di report sono selezionati per impostazione predefinita.

  3. In Data Migration Assistant selezionare Avanti nella schermata Opzioni.

  4. Nella schermata Seleziona origini della finestra di dialogo Connetti a un server indicare i dettagli della connessione a SQL Server e quindi selezionare Connetti.

  5. Nella finestra di dialogo Aggiungi origini selezionare AdventureWorks2016, selezionare Aggiungi e quindi selezionare Avvia valutazione.

    Nota

    Se si usa SSIS, DMA non supporta al momento la valutazione del database SSISDB di origine. I progetti/pacchetti SSIS verranno tuttavia valutati/convalidati man mano che vengono ridistribuiti nel database SSISDB di destinazione ospitato dal database SQL di Azure. Per altre informazioni sulla migrazione dei pacchetti SSIS, vedere l'articolo Eseguire la migrazione di pacchetti SQL Server Integration Services in Azure.

    Al termine della valutazione, i risultati vengono visualizzati come mostrato nella figura seguente:

    Assess data migration

    Per i database in Database SQL di Azure, le valutazioni identificano i problemi di parità delle funzionalità e i problemi che causano un blocco della migrazione per la distribuzione in un database singolo o in pool.

    • La categoria di parità delle funzionalità di SQL Server offre un set completo di indicazioni, approcci alternativi disponibili in Azure e procedure di mitigazione che consentono di pianificare le attività nei progetti di migrazione.
    • La categoria relativa ai problemi di compatibilità identifica funzionalità parzialmente supportate o non supportate che riflettono problemi di compatibilità che potrebbero bloccare la migrazione dei database di SQL Server al database SQL di Azure. Vengono anche fornite raccomandazioni che consentono di risolvere tali problemi.
  6. Esaminare i risultati della valutazione per identificare problemi di blocco della migrazione e problemi di parità della funzionalità selezionando le opzioni specifiche.

Eseguire la migrazione dello schema di esempio

Dopo aver acquisito familiarità con la valutazione e aver verificato che il database selezionato è un candidato idoneo per la migrazione a un database singolo o in pool in Database SQL di Azure, usare DMA per eseguire la migrazione dello schema al database SQL di Azure.

Nota

Prima di creare un progetto di migrazione in Data Migration Assistant, assicurarsi di aver già eseguito il provisioning di un database in Azure come indicato nei prerequisiti.

Importante

Se si usa SSIS, DMA non supporta al momento la migrazione del database SSISDB di origine, ma è possibile ridistribuire i propri progetti/pacchetti SSIS nel database SSISDB di destinazione ospitato dal database SQL di Azure. Per altre informazioni sulla migrazione dei pacchetti SSIS, vedere l'articolo Eseguire la migrazione di pacchetti SQL Server Integration Services in Azure.

Per eseguire la migrazione dello schema AdventureWorks2016 a un database singolo o a un database in pool database SQL di Azure, seguire questa procedura:

  1. In Data Migration Assistant selezionare l'icona Nuovo (+) e quindi in Tipo di progetto selezionare Migrazione.

  2. Specificare il nome del progetto, nella casella di testo Source server type (Tipo di server di origine) selezionare SQL Server e quindi nella casella di testo Target server type (Tipo di server di destinazione) selezionare Database SQL di Azure.

  3. In Migration Scope (Ambito della migrazione) selezionare Schema only (Solo schema).

    Dopo aver eseguito i passaggi precedenti, viene visualizzata l'interfaccia di Data Migration Assistant come illustrato nella figura seguente:

    Create Data Migration Assistant Project

  4. Selezionare Crea per creare il progetto.

  5. In Data Migration Assistant specificare i dettagli di connessione di origine per SQL Server, selezionare Connessione e quindi selezionare il database AdventureWorks2016.

    Data Migration Assistant Source Connection Details

  6. Selezionare Avanti in Connetti al server di destinazione, specificare i dettagli della connessione di destinazione per il database SQL di Azure, selezionare Connetti, quindi selezionare il database AdventureWorksAzure di cui è già stato eseguito il provisioning nel database SQL di Azure.

    Data Migration Assistant Target Connection Details

  7. Selezionare Avanti per passare alla schermata Seleziona oggetti in cui è possibile specificare gli oggetti dello schema nel database AdventureWorks2016 da distribuire in database SQL di Azure.

    Per impostazione predefinita, sono selezionati tutti gli oggetti.

    Generate SQL Scripts

  8. Selezionare Genera script SQL per creare gli script SQL e quindi esaminare gli script per individuare eventuali errori.

    Schema Script

  9. Selezionare Deploy schema (Distribuisci schema) per distribuire lo schema nel database SQL di Azure e in seguito alla distribuzione dello schema, verificare che il server di destinazione non presenti anomalie.

    Deploy Schema

Registrare il provider di risorse

Prima di creare la prima istanza del servizio Migrazione del database, registrare il provider di risorse Microsoft.DataMigration.

  1. Accedere al portale di Azure. Cerca e seleziona Sottoscrizioni.

    Show portal subscriptions

  2. Selezionare la sottoscrizione in cui si vuole creare l'istanza del Servizio Migrazione del database di Azure e quindi selezionare Provider di risorse.

    Show resource providers

  3. Cercare migration e quindi selezionare Registra per Microsoft.DataMigration.

    Register resource provider

Creare un'istanza del Servizio Migrazione del database di Azure

  1. Nel menu del portale di Azure o dalla pagina Home selezionare Crea una risorsa. Cercare e selezionare Servizio Migrazione del database di Azure.

    Azure Marketplace

  2. Nella schermata Servizio Migrazione del database di Azure selezionare Crea.

    Create Azure Database Migration Service instance

    Selezionare il tipo di server di origine e il tipo di server di destinazione appropriati e scegliere l'opzione Servizio Migrazione del database (versione classica).

    Select Database Migration Service (Classic) scenario

  3. Nella schermata Informazioni di base di Crea servizio Migrazione:

    • Selezionare la sottoscrizione.
    • Creare un nuovo gruppo di risorse o sceglierne uno esistente.
    • Specificare un nome per l'istanza del Servizio Migrazione del database di Azure.
    • Selezionare la località in cui si vuole creare l'istanza del Servizio Migrazione del database di Azure.
    • Scegliere Azure come modalità del servizio.
    • Selezionare un piano tariffario. Per altre informazioni sui costi e i piani tariffari, vedere la pagina relativa ai prezzi.

    Configure Azure Database Migration Service instance basics settings

    • Al termine, selezionare Avanti: Rete.
  4. Nella schermata Rete di Crea servizio Migrazione:

    • Selezionare una rete virtuale esistente o crearne una nuova. La rete virtuale fornisce Servizio Migrazione del database di Azure l'accesso al server di origine e all'istanza di destinazione. Per altre informazioni su come creare una rete virtuale nel portale di Azure, vedere l'articolo Creare una rete virtuale con il portale di Azure.

    Configure Azure Database Migration Service instance networking settings

    • Selezionare Rivedi e crea per esaminare i dettagli e quindi selezionare Crea per creare il servizio.

    • Dopo alcuni istanti, l'istanza del servizio Migrazione del database di Azure viene creata e pronta per l'uso:

    Migration service created

Creare un progetto di migrazione

Dopo aver creato il servizio, individuarlo nel portale di Azure, aprirlo e creare un nuovo progetto di migrazione.

  1. Nel menu del portale di Azure selezionare Tutti i servizi. Cercare e selezionare Servizi Migrazione del database di Azure.

    Locate all instances of Azure Database Migration Service

  2. Nella schermata Servizi Migrazione del database di Azure selezionare l'istanza del Servizio Migrazione del database di Azure creata.

  3. Selezionare Nuovo progetto di migrazione.

    Locate your instance of Azure Database Migration Service

  4. Nella schermata Nuovo progetto di migrazione specificare un nome per il progetto, nella casella di testo Tipo di server di origine selezionare SQL Server, nella casella di testo Tipo di server di destinazione selezionare database SQL di Azure e quindi selezionare Migrazione dati per Scegliere tipo di attività di migrazione.

    Create Database Migration Service Project

  5. Selezionare Crea ed esegui attività per creare il progetto ed eseguire l'attività di migrazione.

Specificare i dettagli dell'origine

  1. Nella schermata Seleziona origine specificare i dettagli di connessione per l'istanza di SQL Server di origine.

    Accertarsi di usare un nome di dominio completo (FQDN) per il nome dell'istanza di SQL Server di origine. Nelle situazioni in cui la risoluzione del nome DNS non è possibile, si può usare l'indirizzo IP.

  2. Se nel server di origine non è installato un certificato attendibile, selezionare la casella di controllo Considera attendibile certificato server.

    Quando non è installato un certificato attendibile, SQL Server genera un certificato autofirmato all'avvio dell'istanza. Questo certificato viene usato per crittografare le credenziali per le connessioni client.

    Attenzione

    Le connessioni TLS crittografate con un certificato autofirmato non offrono sicurezza avanzata. Sono infatti suscettibili ad attacchi man-in-the-middle. Non è consigliabile affidarsi a TLS usando certificati autofirmati in un ambiente di produzione o in server connessi a Internet.

    Importante

    Se si usa SSIS, il Servizio Migrazione del database non supporta al momento la migrazione del database SSISDB di origine, ma è possibile ridistribuire i propri progetti/pacchetti SSIS nel database SSISDB di destinazione ospitato dal database SQL di Azure. Per altre informazioni sulla migrazione dei pacchetti SSIS, vedere l'articolo Eseguire la migrazione di pacchetti SQL Server Integration Services in Azure.

    Source Details

  3. Selezionare Avanti: Seleziona database.

Selezionare i database per la migrazione

Selezionare tutti i database o database specifici di cui si vuole eseguire la migrazione a database SQL di Azure. Servizio Migrazione del database offre il tempo di migrazione previsto per i database selezionati. Se i tempi di inattività della migrazione sono accettabili per continuare con la migrazione. Se i tempi di inattività della migrazione non sono accettabili, prendere in considerazione la migrazione a Istanza gestita di SQL con tempi di inattività quasi zero o inviare idee/suggerimenti per migliorare e altri commenti e suggerimenti nel forum della community di Azure , Servizio Migrazione del database di Azure.

  1. Scegliere i database di cui si vuole eseguire la migrazione dall'elenco dei database disponibili.

  2. Esaminare il tempo di inattività previsto. Se è accettabile, selezionare Avanti: Selezionare la destinazione >>

    Source databases

Specificare i dettagli della destinazione

  1. Nella schermata Seleziona destinazione specificare le impostazioni di autenticazione per il database SQL di Azure.

    Select target

    Nota

    Attualmente, l'autenticazione SQL è l'unico tipo di autenticazione supportato.

  2. Selezionare Avanti: eseguire il mapping ai database di destinazione, eseguire il mapping dell'origine e del database di destinazione per la migrazione.

    Se il database di destinazione contiene lo stesso nome del database di origine, il Servizio Migrazione del database di Azure seleziona il database di destinazione per impostazione predefinita.

    Map to target databases

  3. Selezionare Avanti: Impostazioni di migrazione della configurazione, espandere l'elenco di tabelle e quindi esaminare l'elenco dei campi interessati.

    Il Servizio Migrazione del database di Azure seleziona automaticamente tutte le tabelle di origine vuote disponibili nell'istanza di destinazione di Database SQL di Azure. Se si vuole eseguire di nuovo la migrazione delle tabelle che includono già dati, occorre selezionarle esplicitamente in questo pannello.

    Select tables

  4. Selezionare Avanti: Riepilogo, esaminare la configurazione della migrazione e nella casella di testo Nome attività specificare un nome per l'attività di migrazione.

    Choose validation option

Eseguire la migrazione

  • Selezionare Avvia migrazione.

    Viene visualizzata la finestra dell'attività di migrazione con il campo Stato dell'attività impostato su In sospeso.

    Activity Status

Monitorare la migrazione

  1. Nella schermata dell'attività di migrazione selezionare Aggiorna per aggiornare la visualizzazione finché nel campo Stato delle migrazioni non viene indicato Completata.

    Activity Status Completed

  2. Verificare i database di destinazione nell'istanza di Database SQL di Azure di destinazione.

Risorse aggiuntive