Importare o esportare un database SQL di Azure senza consentire ai servizi di Azure di accedere al server

Si applica a: Database SQL di Azure

Il presente articolo illustra come importare o esportare un database SQL di Azure quando Consenti servizi e le risorse di Azure di accedere a questo server è impostato su DISATTIVO. L'articolo una macchina virtuale di Azure per eseguire SqlPackage per eseguire un'operazione di importazione o esportazione.

L'impostazione Consenti a servizi e risorse di Azure di accedere a questo server è visibile nel portale di Azure nel menu Sicurezza del menu delle risorse Rete nella sezione Eccezioni. Per altre informazioni su questa impostazione, vedere Controlli di accesso alla rete del database SQL di Azure.

Accedere al portale di Azure

Accedere al portale di Azure.

Creare macchine virtuali Azure

Creare una macchina virtuale di Azure selezionando il pulsante Distribuisci in Azure.

Questo modello consente di distribuire una semplice macchina virtuale Windows usando alcune opzioni diverse per la versione di Windows con la versione più recente con patch. Viene distribuita una macchina virtuale di dimensione A2 nella posizione del gruppo di risorse e viene restituito il nome di dominio completo della macchina virtuale.

Immagine che mostra il pulsante

Per altre informazioni, tra cui un modello di avvio rapido di Azure, vedere Implementare una macchina virtuale Windows semplice.

Connettersi alla macchina virtuale

La procedura seguente illustra come connettersi alla macchina virtuale con una connessione al desktop remoto.

  1. Al termine della distribuzione, passare alla risorsa macchina virtuale.

  2. Selezionare Connetti.

    Verrà visualizzato un file con estensione RDP (Remote Desktop Protocol) con l'indirizzo IP pubblico e il numero di porta per la macchina virtuale.

    Screenshot di portale di Azure, connettersi alla macchina virtuale, con download RDP evidenziato.

    Nota

    Ci sono diversi modi per connettersi a una macchina virtuale. Questa esercitazione usa Remote Desktop Protocol (RDP) per connettersi alla macchina virtuale, ma una soluzione più recente per l'uso di Azure Bastion è un'alternativa che funziona correttamente, se Bastion è stato implementato nell'ambiente. È anche possibile usare SSH per connettersi alla macchina virtuale.

  3. Selezionare Scarica file RDP.

  4. Chiudere il modulo Connettere la macchina virtuale.

  5. Per connettersi alla VM, aprire il file RDP scaricato.

  6. Quando richiesto, selezionare Connetti.

  7. Immettere il nome utente e la password specificati al momento della creazione della macchina virtuale, quindi scegliere OK.

  8. Durante il processo di accesso potrebbe essere visualizzato un avviso relativo al certificato. Scegliere o Continua per procedere con la connessione.

Installare SqlPackage

Scaricare e installare l’ultima versione di SqlPackage. Per altre informazioni, vedere SqlPackage.

Creare una regola del firewall per consentire l'accesso della VM al database

Prima di tutto, aggiungere l’indirizzo IP pubblico della macchina virtuale al firewall del server. La seguente procedura crea una regola del firewall IP a livello di server per l'indirizzo IP pubblico della macchina virtuale e abilita la connettività dalla macchina virtuale.

  1. Scegliere Database SQL dal menu a sinistra, quindi scegliere il database nella pagina Database SQL. Verrà visualizzata la pagina di panoramica del database, che mostra il nome completo del server (ad esempio sql-svr.database.windows.net) e offre altre opzioni per la configurazione.

    Screenshot della pagina di panoramica de database SQL nel portale di Azure con il nome del server evidenziato.

  2. Copiare il nome completamente qualificato del server da usare per connettersi al server e ai relativi database.

  3. Selezionare Imposta firewall server sulla barra degli strumenti.

  4. Nella pagina Rete, nella scheda Accesso pubblico, nella sezione Impostazioni firewall, selezionare Aggiungi l'indirizzo IPv4 del client. Questio aggiunge l'indirizzo IP pubblico della macchina virtuale a una nuova regola del firewall IP a livello di server. Una regola del firewall IP a livello di server può aprire la porta 1433 per un singolo indirizzo IP o un intervallo di indirizzi IP.

  5. Seleziona Salva. Viene creata una regola del firewall IP a livello di server per l'indirizzo IP pubblico della macchina virtuale che apre la porta 1433 nel server.

Esportazione di un database usando SqlPackage

Per esportare un database SQL di Azure tramite l'utilità della riga di comando SqlPackage, vedere la sezione relativa ai Parametri e proprietà dell'esportazione. L'utilità SqlPackage viene offerta con le versioni più recenti di SQL Server Management Studio e SQL Server Data Tools. È tuttavia possibile scaricare la versione più recente di SqlPackage.

Per altre informazioni e per creare un file BACPAC, vedere Esportare in un file BACPAC.

È consigliabile usare l'utilità SQLPackage per la scalabilità e le prestazioni nella maggior parte degli ambienti di produzione. Per informazioni sull'uso di file BACPAC per la migrazione, vedere l'articolo Migrating from SQL Server to Azure SQL Database using BACPAC Files (Migrazione da SQL Server al database SQL di Azure con file BACPAC) del blog del Customer Advisory Team di SQL Server.

Questo esempio illustra come esportare un database usando SqlPackage con l'autenticazione universale di Active Directory. Sostituire con i valori specifici per l'ambiente in uso.

SqlPackage /a:Export /tf:testExport.bacpac /scs:"Data Source=<servername>.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

Importazione di un database usando SqlPackage

Per importare un database SQL Server tramite l'utilità della riga di comando SqlPackage, vedere la sezione relativa a parametri e proprietà dell'importazione. SqlPackage include le versioni più recenti di SQL Server Management Studio e SQL Server Data Tools. È inoltre possibile scaricare la versione più recente di SqlPackage.

Per la scalabilità e le prestazioni, è consigliabile usare SqlPackage, anziché il portale di Azure, nella maggior parte degli ambienti di produzione. Per informazioni da parte del team di consulenza clienti di SQL Server sull'uso di file BACPAC per la migrazione, vedere l'articolo Migrating from SQL Server to Azure SQL Database using BACPAC Files (Migrazione da SQL Server al database SQL di Azure con file BACPAC) del blog del Customer Advisory Team di SQL Server.

Il comando SqlPackage seguente importa il database AdventureWorks2022 dall'archiviazione locale a un server di database SQL di Azure. Crea un nuovo database chiamato myMigratedDatabase con un livello di servizio Premium e un obiettivo di servizio P6. Modificare questi valori in base alle esigenze specifiche dell'ambiente.

SqlPackage /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=myMigratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2022.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

Importante

Per connettersi a un database SQL di Azure protetto da un firewall aziendale, è necessario che nel firewall sia aperta la porta 1433.

Questo esempio illustra come importare un database usando SqlPackage con l'autenticazione universale di Active Directory.

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

Considerazioni sulle prestazioni

La velocità di esportazione varia a causa di molti fattori (ad esempio, forma dei dati) in modo che sia impossibile prevedere la velocità prevista. SqlPackage può richiedere molto tempo, in particolare per i database di grandi dimensioni.

Per prestazioni ottimali, tentare le strategie seguenti:

  1. Assicurarsi che nessun altro carico di lavoro sia in esecuzione nel database. Creare una copia prima dell'esportazione può essere la soluzione più indicata per verificare che non vi siano altri carichi di lavoro in esecuzione.
  2. Aumentare l’obiettivo di livello del servizio (SLO) del database per gestire meglio il carico di lavoro di esportazione (principalmente operazioni di I/O di lettura). Se il database è attualmente GP_Gen5_4, un livello Business Critical potrebbe essere utile per la lettura del carico di lavoro.
  3. Assicurarsi che ci siano indici cluster, in particolare per tabelle di grandi dimensioni.
  4. Le macchine virtuali (VM) devono trovarsi nella stessa area del database per evitare vincoli di rete.
  5. Le VM devono avere unità SSD con dimensioni adeguate per la generazione di artefatti temporanei prima del caricamento nell'archiviazione BLOB.
  6. Le VM devono avere una configurazione di core e memoria adeguata per il database specifico.

Archiviare il file BACPAC importato o esportato

Il file BACPAC può essere archiviato in BLOB di Azure o File di Azure.

Per ottenere prestazioni ottimali usare File di Azure. SqlPackage opera con il file system in modo che possa accedere direttamente a File di Azure.

Per ridurre le spese, usare BLOB di Azure, che costa meno di una condivisione File di Azure Premium. Tuttavia, è necessario copiare il file BACPAC tra il BLOB e il file system locale prima dell'operazione di importazione o esportazione. Di conseguenza, il processo richiede più tempo.

Per caricare o scaricare file BACPAC, vedere Trasferire dati con AzCopy e archiviazione BLOB e Trasferire dati con AzCopy e archiviazione dei file.

A seconda dell'ambiente, potrebbe essere necessario Configurare firewall di Azure Storage e reti virtuali.