Preparare l'ambiente per la migrazione di una macchina virtuale SQL (anteprima) - Migrazione SQL Server in Azure Arc

Applica a:SQL Server

Questo articolo illustra come preparare l'ambiente per una migrazione di macchine virtuali SQL Server dell'istanza di SQL Server abilitata da Azure Arc a SQL Server in macchine virtuali Azure nel portale di Azure.

Annotazioni

Prerequisiti

Per eseguire la migrazione dei database di SQL Server a SQL Server in macchine virtuali Azure tramite il portale di Azure, sono necessari i prerequisiti seguenti:

Versioni di SQL Server supportate

La migrazione delle macchine virtuali di SQL Server funziona con ogni edizione di SQL Server su Windows e Linux.

Nella tabella seguente sono elencate le versioni minime supportate SQL Server per la migrazione:

Versione di SQL Server Aggiornamento minimo necessario per la manutenzione
SQL Server 2025 (17.x) SQL Server 2025 RTM (17.0.1000.7)
SQL Server 2022 (16.x) SQL Server 2022 RTM (16.0.1000.6)
SQL Server 2019 (15.x) SQL Server 2019 RTM (15.0.2000.5)
SQL Server 2017 (14.x) SQL Server 2017 RTM (14.0.1000.169)
SQL Server 2016 (13.x) SQL Server 2016 RTM (13.0.1400.361)
SQL Server 2014 (12.x) SQL Server 2014 RTM (12.0.2000.8)
SQL Server 2012 (11.x) SQL Server 2012 RTM (11.0.2100.60)

Autorizzazioni

Questa sezione descrive le autorizzazioni necessarie per eseguire la migrazione dei database di SQL Server a SQL Server nelle macchine virtuali Azure tramite il portale di Azure.

Nell'istanza di SQL Server di origine sono necessarie le autorizzazioni seguenti:

  • Se si abilitano privilegi minimi, le autorizzazioni necessarie, ad esempio sysadmin , vengono concesse in base alle esigenze durante il processo di migrazione del database.
  • Se non è possibile usare privilegi minimi, sono necessarie autorizzazioni sysadmin per l'istanza di SQL Server di origine.

È necessario il ruolo Virtual Machine Contributor nella macchina virtuale di destinazione Azure per eseguire la migrazione.

Creare un account di archiviazione

Si usa un account Azure Blob Storage come risorsa di archiviazione intermedia per i file di backup tra l'istanza di SQL Server e il SQL Server nella macchina virtuale Azure. L'account di archiviazione deve trovarsi nella stessa sottoscrizione e area di Azure del SQL Server sul VM di Azure di destinazione.

Per creare un nuovo account di archiviazione e un contenitore BLOB all'interno dell'account di archiviazione:

  1. Creare un account di archiviazione:
    1. Cercare Account di archiviazione nel portale di Azure e selezionare Crea.
    2. Nella scheda Informazioni di base selezionare la sottoscrizione e il gruppo di risorse. L'area deve essere la stessa del tuo SQL Server su macchina virtuale Azure.
    3. Lasciare vuoto il tipo di archiviazione preferito .
    4. Usare le impostazioni predefinite per le altre schede e selezionare Rivedi e crea.
    5. Al termine della convalida, selezionare Crea.
  2. Crea un contenitore BLOB nell'account di archiviazione.
    1. Passare al nuovo account di archiviazione nel portale di Azure.
    2. In Archiviazione dati selezionare Contenitori.
    3. Usare Aggiungi contenitore per aprire il riquadro Nuovo contenitore .
    4. Immettere un nome per il contenitore, lasciare le opzioni predefinite e selezionare Crea per creare il contenitore.
  3. (Facoltativo) Se il Azure Storage si trova dietro un firewall, l'archiviazione BLOB di Azure richiede configurazione aggiuntiva dopo il provisioning della macchina virtuale SQL Server. Configurare la delega per la subnet con il nome della macchina virtuale.

Concedere le autorizzazioni per Azure Blob Storage

La migrazione di macchine virtuali di SQL Server in Azure Arc usa un'identità gestita per autenticarsi con Azure Blob Storage.

È necessario concedere le autorizzazioni seguenti:

Concedere all'utente l'accesso all'account di archiviazione

Per accedere ai backup del database durante il processo di migrazione, assegnare all'utente che accede al portale di Azure ed esegue la migrazione al Storage Blob Data Reader ruolo per l'account di archiviazione che contiene i backup.

Per assegnare il ruolo, seguire questa procedura:

  1. Nel portale di Azure passare al gruppo di risorse che contiene l'account di archiviazione.

  2. Selezionare Controllo di accesso (IAM) dal menu delle risorse.

  3. Usare + Aggiungi per selezionare Aggiungi assegnazione di ruolo e aprire il riquadro Aggiungi assegnazione di ruolo .

  4. Cercare e selezionare il ruolo Lettore dati BLOB di archiviazione. Quindi seleziona Avanti.

    Screenshot per trovare il ruolo Lettore dati del Blob di Archiviazione nella pagina IAM per l'account di archiviazione nel portale Azure.

  5. Usare + Seleziona membri per aprire il riquadro Seleziona membri e cercare l'account utente della persona che esegue la migrazione. Se più persone eseguono la migrazione dei dati, concedere a tutti gli utenti l'accesso. Selezionare l'account utente e quindi utilizzare Seleziona per salvare la selezione. Selezionare l'opzione per assegnare l'accesso a Utente, gruppo o entità servizio.

  6. Selezionare Rivedi e assegna per passare alla scheda Rivedi e assegna e quindi selezionare di nuovo Rivedi e assegna per completare l'assegnazione di ruolo.

Concedere all'utente l'accesso al gruppo di risorse

Per accedere ai backup del database durante il processo di migrazione, all'utente che accede al portale di Azure ed esegue la migrazione deve essere assegnato il ruolo Reader nel gruppo di risorse che contiene l'account di archiviazione.

Per assegnare il ruolo, seguire questa procedura:

  1. Nel portale di Azure passare al gruppo di risorse che contiene l'account di archiviazione.

  2. Selezionare Controllo di accesso (IAM) dal menu delle risorse.

  3. Usare + Aggiungi per selezionare Aggiungi assegnazione di ruolo e aprire il riquadro Aggiungi assegnazione di ruolo .

  4. Cercare e selezionare il ruolo Lettore . Quindi seleziona Avanti.

    Screenshot della ricerca del ruolo Lettore nella pagina IAM per il gruppo di risorse nel portale Azure.

  5. Usare + Seleziona membri per aprire il riquadro Seleziona membri e cercare l'account utente della persona che esegue la migrazione. Se più persone eseguono la migrazione dei dati, concedere a tutti gli utenti l'accesso. Selezionare l'account utente e quindi utilizzare Seleziona per salvare la selezione. Selezionare l'opzione per assegnare l'accesso a Utente, gruppo o entità servizio e quindi usare Avanti per continuare.

  6. Nella scheda Tipo di assegnazione impostare Tipo di assegnazione su Attivo e durata assegnazione su Permanente:

    Screenshot che mostra come impostare il tipo di assegnazione su Attivo e la durata dell'assegnazione su Permanente nella scheda Tipo di assegnazione del portale Azure.

  7. Selezionare Rivedi e assegna per passare alla scheda Rivedi e assegna e quindi selezionare di nuovo Rivedi e assegna per completare l'assegnazione di ruolo.

Concedere l'accesso all'identità gestita all'account di archiviazione

Dopo aver eseguito il provisioning della macchina virtuale SQL Server, è necessario assegnare all'identità gestita della macchina virtuale SQL Server il ruolo Storage Blob Data Reader in modo che possa accedere all'account di Archiviazione BLOB di Azure durante il processo di migrazione.

Prima di tutto, è necessario determinare il tipo di identità gestita usata dalla macchina virtuale SQL Server. A tale scopo, seguire questa procedura:

  1. Passare alla risorsa Macchine virtuali nel portale di Azure.
  2. In Sicurezza selezionare Identità per aprire il riquadro Identità . Scegliere tra l'uso dell'identità assegnata dal sistema o di un'identità assegnata dall'utente :
    1. Nella scheda Assegnata dal sistema è possibile usare l'interruttore Stato per abilitare l'identità assegnata dal sistema se non è già abilitata. Se l'identità assegnata dal sistema è abilitata, è quindi possibile selezionare Azure assegnazioni di ruolo per passare alla pagina Azure assegnazioni di ruolo e quindi usare +Aggiungi assegnazione di ruolo (anteprima) per concedere Storage Blob Data Reader autorizzazioni per l'identità assegnata dal sistema del SQL Server Vm selezionando Storage come Scope e quindi selezionando la risorsa.
    2. Nella scheda User assigned è possibile visualizzare l'elenco delle identità assegnate dall'utente associate alla macchina virtuale SQL Server. Se si vuole aggiungere una nuova identità assegnata dall'utente, selezionare + Aggiungi identità assegnata dall'utente e quindi selezionare un'identità assegnata dall'utente esistente dalla sottoscrizione per collegarla alla macchina virtuale SQL Server. Prendere nota del nome dell'identità assegnata dall'utente da usare per l'autenticazione per Azure Blob Storage, perché sarà necessario per i passaggi successivi.

Per concedere l'accesso all'identità gestita assegnata dall'utente all'account di archiviazione, seguire questa procedura:

  1. Passare all'account Azure Blob Storage nel portale di Azure che si intende usare per la migrazione.
  2. Selezionare Controllo di accesso (IAM) dal menu delle risorse.
  3. Usare + Aggiungi per selezionare Aggiungi assegnazione di ruolo e aprire il riquadro Aggiungi assegnazione di ruolo .
  4. Cercare e selezionare il ruolo Lettore dati BLOB di archiviazione. Quindi seleziona Avanti.
  5. Sotto Assegna accesso a, seleziona l'opzione Identità gestita.
  6. Usare Seleziona membri per aprire il riquadro Seleziona membri .
  7. In Identità gestita selezionare Identità gestita assegnata dall'utente.
  8. Cercare il nome Primary identity annotato in precedenza dalla pagina Identity della SQL Server VM e selezionarla.
  9. Usare Seleziona per salvare la selezione.
  10. Selezionare Rivedi e assegna per passare alla scheda Rivedi e assegna e quindi selezionare di nuovo Rivedi e assegna per completare l'assegnazione di ruolo.

Caricare i backup nell'account Blob Storage

Quando il contenitore BLOB è pronto e si è verificato che la macchina virtuale SQL Server può accedere al contenitore, è possibile iniziare a caricare i backup nell'account Azure Blob Storage. Quando tutti i backup vengono caricati nell'account di archiviazione, è possibile procedere con la migrazione.

Per caricare i backup in Azure:

  1. Eseguire il backup su un'istanza di SQL Server.
  2. Copy i backup nell'account Blob Storage.

Prendere in considerazione le procedure consigliate seguenti:

  • Effettuare backup utilizzando le opzioni COMPRESSION e CHECKSUM per ridurre le dimensioni dei file di backup e prevenire la migrazione di un database danneggiato.
  • Eseguire il backup in lotti più piccoli.
  • Usare thread di caricamento paralleli.
  • Rendere il più piccolo possibile l'ultimo file di backup.
  • Per eseguire la migrazione di più database usando lo stesso contenitore Azure Blob Storage, inserire tutti i file di backup per un singolo database in una cartella separata all'interno del contenitore. Usare la struttura di file flat per ogni cartella di database. L'inserimento di cartelle nelle cartelle di database non è supportato.

Eseguire backup in un'istanza di SQL Server

I passaggi di questa sezione illustrano come eseguire il backup in locale, ma è anche possibile eseguire il backup direttamente nell'URL.

Imposta i database che vuoi migrare al modello di recupero completo per consentire i backup del log.

-- To permit log backups, before the full database backup, modify the database to use the full recovery
USE master;

ALTER DATABASE SampleDB
SET RECOVERY FULL;
GO

Se non sono già presenti backup esistenti, per eseguire manualmente backup completi, differenziali e del log del database nell'archiviazione locale, usare gli script T-SQL di esempio seguenti. CHECKSUM non è necessario, ma è consigliabile impedire la migrazione di un database danneggiato e per tempi di ripristino più rapidi.

Nell'esempio seguente viene eseguito un backup completo del database nel disco locale:

-- Take full database backup to local disk
BACKUP DATABASE [SampleDB]
    TO DISK = 'C:\BACKUP\SampleDB_full.bak'
    WITH INIT, COMPRESSION, CHECKSUM;
GO

L'esempio seguente esegue un backup differenziale sul disco locale:

-- Take differential database backup to local disk
BACKUP DATABASE [SampleDB]
    TO DISK = 'C:\BACKUP\SampleDB_diff.bak'
    WITH DIFFERENTIAL, COMPRESSION, CHECKSUM;
GO

Nell'esempio seguente viene eseguito un backup del log delle transazioni nel disco locale:

-- Take transactional log backup to local disk
BACKUP LOG [SampleDB]
    TO DISK = 'C:\BACKUP\SampleDB_log.trn'
    WITH COMPRESSION, CHECKSUM;
GO

Copiare i backup nell'account Blob Storage

Dopo che i backup sono pronti e si vuole avviare la migrazione dei database a una macchina virtuale SQL Server, usare gli approcci seguenti per copiare i backup esistenti nell'account Blob Storage:

Annotazioni

Per eseguire la migrazione di più database usando lo stesso contenitore Azure Blob Storage, inserire tutti i file di backup per un singolo database in una cartella separata all'interno del contenitore. Usare la struttura di file flat per ogni cartella di database. L'inserimento di cartelle nelle cartelle di database non è supportato.

Convalidare l'accesso all'archiviazione delle macchine virtuali SQL Server

Verificare che la macchina virtuale SQL Server possa accedere all'account Blob Storage.

Caricare prima di tutto qualsiasi backup del database, ad esempio full_0_0.bak, nel contenitore Azure Blob Storage.

Connettersi quindi alla macchina virtuale SQL Server ed eseguire una query di test di esempio per determinare se la macchina virtuale SQL Server è in grado di accedere al backup nel contenitore.

Se si usa un token di firma di accesso condiviso per l'autenticazione nell'account di archiviazione, sostituire il <sastoken> con il token di firma di accesso condiviso ed eseguire la query seguente nella macchina virtuale SQL Server:

CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/databases]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<sastoken>';

RESTORE HEADERONLY
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<containername>/full_0_0.bak';

Registrare le macchine virtuali di SQL Server con l'estensione SQL IaaS Agent

Se la macchina virtuale di destinazione SQL Server esiste già, è necessario registrarla con l'estensione SQL IaaS Agent prima di poterla selezionare come destinazione di migrazione nel portale di Azure. Se la macchina virtuale di destinazione SQL Server non esiste ancora, è possibile effettuarne il provisioning durante il processo di migrazione e verrà registrata automaticamente con l'estensione SQL IaaS Agent.

Limitazioni

Quando si esegue la migrazione dei database di SQL Server a SQL Server in macchine virtuali Azure tramite il portale di Azure, prendere in considerazione le limitazioni seguenti:

  • Se si esegue la migrazione di un database singolo, è necessario inserire i backup del database in una struttura di file flat all'interno di una cartella di database (inclusa la cartella radice del contenitore). Non è possibile annidare queste cartelle, perché l'annidamento non è supportato.
  • Se si esegue la migrazione di più database usando lo stesso contenitore Azure Blob Storage, è necessario inserire i file di backup per database diversi in cartelle separate all'interno del contenitore.
  • Non è possibile sovrascrivere i database esistenti nel SQL Server di destinazione sulla macchina virtuale Azure tramite il Servizio Migrazione del database (DMS).
  • La migrazione di SQL Server non supporta la configurazione della disponibilità elevata e del ripristino di emergenza sulla destinazione per far corrispondere alla topologia di origine.
  • Gli oggetti server seguenti non sono supportati:
    • SQL Server Agent attività
    • Credentials
    • pacchetti SQL Server Integration Services (SSIS)
    • Controllo server
  • Non è possibile usare un runtime di integrazione self-hosted esistente creato da Azure Data Factory (ADF) per le migrazioni di database con DMS.
  • Le macchine virtuali con versioni di destinazione di SQL Server 2008 e versioni precedenti non sono supportate durante la migrazione a SQL Server in una macchina virtuale Azure.
  • Per la migrazione è necessaria la registrazione con l'estensione SQL IaaS Agent. L'estensione supporta solo un'istanza predefinita o una singola istanza denominata.
  • È possibile eseguire la migrazione di un massimo di 100 database alla stessa macchina virtuale Azure di destinazione usando una o più migrazioni contemporaneamente. Inoltre, al termine di una migrazione con 100 database, attendere almeno 30 minuti prima di avviare una nuova migrazione alla stessa SQL Server in una macchina virtuale Azure di destinazione. Inoltre, ogni operazione di migrazione (avvio della migrazione, cutover) per ciascun database richiede alcuni minuti in sequenza. Ad esempio, per eseguire la migrazione di 100 database, potrebbero essere necessari circa 200 (2 x 100) minuti per creare le code di migrazione e circa 100 (1 x 100) minuti per tagliare tutti i 100 database (esclusi i tempi di backup e ripristino). Pertanto, la migrazione diventa più lenta man mano che aumenta il numero di database. È consigliabile pianificare in anticipo una finestra di migrazione più lunga in base a test di migrazione rigorosi o partizionare un numero elevato di database in batch durante la migrazione a SQL Server in una macchina virtuale Azure.
  • Oltre a configurare la rete/il firewall dell'account Azure Storage per consentire alla macchina virtuale di accedere ai file di backup, è anche necessario configurare rete/firewall del SQL Server in una macchina virtuale Azure per consentire la connessione in uscita all'account di archiviazione.
  • È necessario mantenere accesa la macchina virtuale di Azure di destinazione mentre è in corso la migrazione di SQL Server. Inoltre, quando si crea una nuova migrazione, si esegue il failover o si annullano le migrazioni in corso di migrazione.

Passo successivo