Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare Servizio Migrazione del database di Azure tramite il portale di Azure per eseguire la migrazione di database da un'istanza locale di SQL Server al database SQL di Azure (offline).
Questa esercitazione illustra come eseguire la migrazione del database di esempio AdventureWorks2022 da un'istanza locale di SQL Server al database SQL di Azure usando Servizio Migrazione del database. Questa esercitazione usa la modalità di migrazione offline, che considera un tempo inattivo accettabile durante il processo di migrazione.
In questa esercitazione apprenderai a:
- Creare un'istanza del Servizio Migrazione del database di Azure
- Avviare la migrazione e monitorare lo stato di avanzamento fino al completamento
Importante
Attualmente, le migrazioni online per le destinazioni del database SQL di Azure non sono disponibili con il Servizio Migrazione del database di Azure. In una migrazione offline, i tempi di inattività dell’applicazione iniziano all’avvio della migrazione. È consigliabile testare una migrazione offline per determinare se il tempo di inattività è accettabile.
Opzioni di migrazione
La sezione seguente descrive come usare servizio Migrazione del database di Azure con il portale di Azure.
Prerequisiti
Prima di iniziare l'esercitazione:
Assicurarsi di poter accedere al portale di Azure.
Assicurati che il provider di risorse Microsoft.DataMigration sia registrato nell'abbonamento.
Assicurarsi che un account Azure sia assegnato a uno dei ruoli predefiniti seguenti:
- Collaboratore per il database SQL di destinazione Azure
- Ruolo lettore per il gruppo di risorse di Azure che contiene il database SQL di Azure di destinazione
- Ruolo Proprietario o Collaboratore per la sottoscrizione di Azure (obbligatorio se si crea una nuova istanza del Servizio Migrazione del database di Azure)
In alternativa all'uso di uno di questi ruoli predefiniti, è possibile assegnare un ruolo personalizzato.
Creare un database SQL di Azure di destinazione.
Assicurarsi che l'account di accesso di SQL Server che si connette all'istanza di SQL Server di origine sia membro del ruolo db_datareader e che l'account di accesso per l'istanza di SQL Server di destinazione sia membro del ruolo db_owner.
Per eseguire la migrazione dello schema del database dall'origine al database SQL di Azure di destinazione usando il Servizio Migrazione del database, la versione minima supportata richiesta è la 5.37 o successiva.
Per la migrazione dello schema, le autorizzazioni minime per SQL Server di origine sono db_owner per accedere al database e nel database SQL di Azure di destinazione, l'utente deve essere membro di tutti i ruoli a livello di server nella tabella seguente:
| Ruoli | Descrizione |
|---|---|
| ##MS_DatabaseManager## | I membri del ruolo predefinito del server ##MS_DatabaseManager## possono creare ed eliminare database. Un membro del ruolo ##MS_DatabaseManager## che crea un database diventa il proprietario del database, che consente all'utente di connettersi a tale database come utente dbo. L'utente dbo ha tutte le autorizzazioni database nel database. I membri del ruolo ##MS_DatabaseManager## non hanno necessariamente l'autorizzazione per accedere ai database di cui non sono proprietari. È consigliabile usare questo ruolo del server sul ruolo a livello di database dbmanager esistente nel master database. |
| ##MS_DatabaseConnector## | I membri del ruolo predefinito del server ##MS_DatabaseConnector## possono connettersi a qualsiasi database senza richiedere a un account utente nel database di connettersi. |
| ##MS_DefinitionReader## | I membri del ruolo predefinito del server ##MS_DefinitionReader## possono leggere tutte le viste del catalogo coperte da VIEW ANY DEFINITION in qualsiasi database in cui il membro di questo ruolo ha un account utente. |
| ##MS_LoginManager## | I membri del ruolo predefinito del server ##MS_LoginManager## possono creare ed eliminare account di accesso. È consigliabile usare questo ruolo del server sul ruolo a livello di database loginmanager presente nel master database. |
Preparare il database SQL di Azure di destinazione
Per creare l'account di accesso e l'utente nel database SQL di Azure di destinazione, eseguire lo script seguente nel master database:
CREATE LOGIN testuser WITH PASSWORD = '<password>';
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [testuser];
GO
ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [testuser];
GO
ALTER SERVER ROLE ##MS_DatabaseManager## ADD MEMBER [testuser];
GO
ALTER SERVER ROLE ##MS_LoginManager## ADD MEMBER [testuser];
GO
CREATE USER testuser FOR LOGIN testuser;
EXECUTE sp_addRoleMember 'dbmanager', 'testuser';
EXECUTE sp_addRoleMember 'loginmanager', 'testuser';
È ora possibile eseguire la migrazione dello schema del database e dei dati usando il Servizio Migrazione del database. È anche possibile usare altri strumenti, ad esempio l'estensione Progetti di database SQL in Visual Studio Code, per eseguire la migrazione dello schema prima di selezionare l'elenco di tabelle di cui eseguire la migrazione.
Nota
Se non esistono tabelle nella destinazione del database SQL di Azure o non sono selezionate tabelle prima di avviare la migrazione, il pulsante Avanti non è disponibile per avviare la migrazione. Se non esiste alcuna tabella nella destinazione, è necessario selezionare l'opzione di migrazione dello schema per procedere.
Creare un'istanza del Servizio di Migrazione del Database
Passaggio 1: nel portale di Azure, spostarsi alla pagina del Servizio Migrazione del database di Azure. Creare una nuova istanza del Servizio Migrazione del database di Azure o riutilizzare un'istanza esistente creata in precedenza.
Usare un'istanza esistente del Servizio Migrazione del database
Per usare un'istanza esistente di Servizio Migrazione del database:
In portale di Azure, nel Servizio Migrazione del database di Azure selezionare un'istanza esistente di Servizio Migrazione del database da usare, assicurandosi che sia presente nel gruppo di risorse e nell'area corretti.
Creare una nuova istanza del Servizio Migrazione del database
Per crere una nuova istanza del Servizio Migrazione del database:
Nel portale di Azure, in Servizio Migrazione del database di Azure selezionare Crea.
In Selezionare lo scenario di migrazione e il Servizio Migrazione del database, selezionare l'input desiderato, ad esempio Tipo di server di origine e destinazione, scegliere Servizio Migrazione del database e quindi Seleziona.
Nella schermata successiva Crea servizio Migrazione dati, selezionare la sottoscrizione e il gruppo di risorse, quindi selezionare Località e immettere il nome del Servizio Migrazione del Database. Selezionare Rivedi e crea. Questo crea il Servizio Migrazione del database di Azure.
Se è necessario il runtime di integrazione self-hosted, nella pagina panoramica del Servizio di Migrazione del Database e in Impostazioni, selezionare Runtime di integrazione e seguire i passaggi seguenti:
Selezionare Configura runtime di integrazione e scegliere il collegamento Scarica e installa runtime di integrazione per aprire il collegamento di download in un Web browser. Scaricare il runtime di integrazione e quindi installarlo in un computer che soddisfi i prerequisiti per la connessione all'istanza di SQL Server di origine. Per ulteriori informazioni, vedere Runtime di integrazione ospitato internamente per le migrazioni della banca dati.
Al termine dell'installazione, viene aperto automaticamente il Microsoft Integration Runtime Configuration Manager per avviare il processo di registrazione.
Nella tabella Chiave di autenticazione, copiare una delle chiavi di autenticazione fornite nella procedura guidata e incollarla in Microsoft Integration Runtime Configuration Manager.
Se la chiave di autenticazione è valida, viene visualizzata un'icona di spunta verde nel runtime di integrazione Configuration Manager. Un segno di spunta verde indica che è possibile procedere alla Registrazione.
Dopo aver registrato il runtime di integrazione self-hosted, chiudere il Microsoft Integration Runtime Configuration Manager. Potrebbero essere necessari alcuni minuti per aggiornare i dettagli del nodo sul portale di Azure per il Servizio di Migrazione dei Database, nella sezione Impostazioni del runtime di integrazione>.
Nota
Per altre informazioni sul runtime di integrazione self-hosted, vedere Creare e configurare il runtime di integrazione self-hosted.
Avviare una nuova migrazione
Per avviare una nuova migrazione, passare a Servizio Migrazione del database di Azure nel portale di Azure e usare +Crea per creare una nuova istanza del Servizio Migrazione del database oppure selezionare un'istanza esistente e quindi passare all'istanza del Servizio Migrazione del database di Azure.
Nel riquadro Panoramica dell'istanza del Servizio Migrazione del database di Azure selezionare Nuova migrazione:
Nello scenario Seleziona nuova migrazione, scegliere l'origine, il tipo di server di destinazione, la modalità di migrazione e quindi Seleziona.
NellaMigrazione guidata offline del database SQL di Azure segui la seguente procedura:Nella scheda Dettagli origine immettere i dettagli per l'istanza di SQL Server di origine e quindi selezionare Avanti: Connetti all'origine SQL Server:
Nella scheda Connetti all'origine SQL Server specificare i dettagli di connessione e quindi selezionare Avanti: Selezionare i database per la migrazione:
Nella scheda Seleziona database per la migrazione selezionare la casella accanto ai database di cui si vuole eseguire la migrazione. Il popolamento dell'elenco di database può richiedere del tempo. Selezionare Avanti: Connettersi al database SQL di Azure di destinazione.
Nella scheda Connetti al database SQL di Azure di destinazione specificare i dettagli di connessione e quindi selezionare Avanti: Eseguire il mapping dei database di origine e di destinazione:
Nella scheda Database di origine e destinazione mappare i database tra l'origine e la destinazione.
(Facoltativo) Selezionare la casella accanto a Migrate Missing schema (Esegui migrazione dello schema mancante ) per distribuire gli oggetti dello schema mancanti dall'origine alla destinazione del database SQL di Azure per eseguire la migrazione degli oggetti dello schema seguenti con una singola casella di controllo:
- Schemi
- Tabelle (selezionate)
- Indici
- Visualizzazioni
- Stored procedures (Procedure memorizzate)
- Sinonimi
- Trigger DDL (DdlTriggers)
- Impostazioni predefinite
- Cataloghi Full-Text (FullTextCatalogs)
- Guide dei piani (PlanGuides)
- Ruoli
- Regole
- I ruoli dell'applicazione (ApplicationRoles)
- Aggregazioni definite dall'utente (UserDefinedAggregates)
- Tipi di dati definiti dall'utente (UserDefinedDataTypes)
- Funzioni definite dall'utente (UserDefinedFunctions)
- Tipi di tabella definiti dall'utente (UserDefinedTableTypes)
- Tipi definiti dall'utente (UserDefinedTypes)
- Utenti* (non tutti i tipi di utente)
- XmlSchemaCollections
Nota
- Se si seleziona Esegui migrazione dello schema mancante, il servizio Migrazione del database esegue la migrazione dello schema prima della migrazione dei dati.
- Il Servizio Migrazione del database procede con la fase di migrazione dei dati anche se la migrazione dello schema rileva errori, a meno che non si verifichino problemi con gli oggetti tabella.
Successivamente, usare Selezionare tutte le tabelle per eseguire la migrazione di tutte le tabelle oppure usare la casella di immissione del testo per filtrare l'elenco delle tabelle e selezionare singole tabelle di cui eseguire la migrazione. Selezionare quindi Avanti: Riepilogo della migrazione del database.
Nella scheda Riepilogo migrazione del database esaminare i dettagli e quindi selezionare Avvia migrazione, che avvia la migrazione del database e ti riporta automaticamente al dashboard del Servizio Migrazione del database.
Nota
Per una migrazione offline, il tempo di inattività dell'applicazione inizia all'avvio della migrazione.
Monitorare la migrazione del database
Per monitorare la migrazione del database, nel riquadro Panoramica dell'istanza del Servizio Migrazione del database selezionare Monitorare le migrazioni.
Nella scheda Migrazioni è possibile tenere traccia delle migrazioni in corso, completate e non riuscite (se presenti) oppure visualizzare tutte le migrazioni di database. Nella barra dei menu selezionare Aggiorna per aggiornare lo stato della migrazione.
Il Servizio Migrazione del database restituisce il più recente stato di migrazione noto ogni qual volta lo stato della migrazione viene aggiornato. La tabella seguente descrive i possibili stati:
Stato Descrizione Creazione Il servizio avvia la migrazione. Preparazione per la copia Il servizio sta disabilitando le statistiche automatiche, i trigger e gli indici nella tabella di destinazione. Copia I dati vengono copiati dal database di origine a quello di destinazione. Copia completata La copia dei dati è stata completata. Il servizio è in attesa di altre tabelle per completare la copia e iniziare i passaggi finali per restituire le tabelle allo schema originale. Ricompilazione degli indici Il servizio sta ricompilando gli indici nelle tabelle di destinazione. Riuscito Tutti i dati sono stati copiati e gli indici ricompilati. In Nome origine selezionare un nome di database per aprire la vista tabella. In questa visualizzazione dettagliata viene visualizzato lo stato corrente della migrazione, il numero di tabelle attualmente in tale stato e lo stato dettagliato di ogni tabella:
Quando viene eseguita la migrazione di tutti i dati della tabella alla destinazione database SQL di Azure, il Servizio Migrazione del database aggiorna lo stato della migrazione da In corso a Operazione completata.
Nota
Il Servizio Migrazione del database ottimizza la migrazione ignorando le tabelle senza dati (0 righe). Le tabelle che non dispongono di dati non vengono visualizzate nell'elenco, anche se sono state selezionate le tabelle al momento della creazione della migrazione.
La migrazione al database SQL di Azure è completata. Esaminare una serie di attività post-migrazione per garantire che tutto funzioni in modo uniforme ed efficiente.
Limiti
La migrazione offline di Azure SQL Database utilizza le pipeline di Azure Data Factory (ADF) per lo spostamento dei dati e quindi rispetta le limitazioni di Azure Data Factory. Quando viene creato anche un servizio di migrazione del database, viene creato un Azure Data Factory corrispondente. Di conseguenza, i limiti di fabbrica si applicano per ciascun servizio.
- Il computer in cui è installato SHIR funge da calcolo per la migrazione. Assicurarsi che questo computer possa gestire il carico di cpu e memoria della copia dei dati. Per altre informazioni, consultare Creare e configurare un runtime di integrazione self-hosted.
- 100.000 tabelle per limite di database.
- 10.000 migrazioni simultanee di database per servizio.
- La velocità di migrazione dipende in larga parte dall'SKU del database SQL di Azure di destinazione e dall'host del runtime di integrazione self-hosted.
- Nel database SQL di Azure, la migrazione non si dimensiona bene con il numero di tabelle a causa del sovraccarico di Azure Data Factory (ADF) all'avvio delle attività. Se un database ha migliaia di tabelle, il processo di avvio di ciascuna tabella potrebbe richiedere un paio di secondi, anche se sono composti da una riga con 1 bit di dati.
- Il database SQL di Azure non supporta la migrazione di nomi di tabella contenenti caratteri a byte doppio. La mitigazione consiste nel rinominare le tabelle prima della migrazione; possono essere nuovamente modificate con i nomi originali a migrazione correttamente avvenuta.
- Le tabelle con colonne BLOB di grandi dimensioni possono non riuscire nella migrazione a causa del timeout.
- I nomi di database con parole riservate di SQL Server non sono attualmente supportati.
- I nomi di database che includono punti e virgola non sono attualmente supportati.
- Le colonne calcolate non vengono migrate.
- Le colonne nel database di origine con vincoli predefiniti e contenenti
NULLvalori vengono migrate con i valori predefiniti definiti nel database SQL di Azure di destinazione, anziché conservare i valori NULL.