Esporta (0) Stampa
Espandi tutto

Migrazione dei dati al database SQL di Azure: strumenti e tecniche

Aggiornamento: maggio 2014

In questo documento vengono fornite informazioni aggiuntive sulla migrazione della definizione dei dati (schema) e sulla migrazione dei dati al database SQL di Microsoft Azure. Le informazioni contenute nel documento riguardano principalmente la migrazione occasionale da SQL Server a database SQL di Azure.

Microsoft Azure offre diverse opzioni per l'archiviazione dei dati. È possibile scegliere di utilizzare una o molte delle opzioni disponibili per i progetti in uso.

Il database SQL di Microsoft Azure è la tecnologia SQL Server disponibile come servizio nella piattaforma Azure. Le soluzioni di database SQL di Azure basate su cloud possono assicurare molti vantaggi, tra cui provisioning rapido, scalabilità economica, disponibilità elevata e ridotto overhead di gestione. database SQL di Azure supporta le stesse procedure di sviluppo e gli stessi strumenti utilizzati per applicazioni SQL Server locali. Pertanto, dovrebbe trattarsi di un ambiente familiare per la maggior parte degli sviluppatori.

L'obiettivo a lungo termine di SQL Server e database SQL di Azure è quello di disporre di funzionalità equivalenti e simmetriche. Attualmente, tuttavia, vi sono differenze nell'architettura e nell'implementazione che devono essere risolte in caso di migrazione di database a database SQL di Azure e di sviluppo di soluzioni di database SQL di Azure.

Prima di eseguire la migrazione di un database a database SQL di Azure, è importante capire quando eseguire questa operazione e le differenze tra database SQL di Azure e SQL Server.

Sono disponibili tre offerte principali di archiviazione nella piattaforma Azure. Nel Servizio di archiviazione Azure sono incluse tabelle, BLOB e code. Quando si progetta una soluzione di Azure, è opportuno valutare le differenti opzioni e utilizzare ogni meccanismo di archiviazione per fornire le prestazioni migliori per la soluzione. Per informazioni sulle offerte e sui nuovi livelli di servizio di Azure, leggere la pagina relativa ai livelli di servizio (edizioni) del database SQL di Azure.

 

Offerta di archiviazione

Scopo

Dimensione massima

database SQL di Microsoft Azure

Sistema di gestione di database relazionali

150 GB

Archiviazione di Azure

BLOB

Archiviazione durevole di oggetti binari di grandi dimensioni quali video o audio

200 GB o 1 TB

Tabella

Archiviazione durevole di dati strutturati

100 TB

Coda

Archiviazione durevole di messaggi tra processi

100 TB

Archiviazione locale

Archiviazione temporanea per istanza

250 GB fino a 2 TB

Tramite l'archiviazione locale è possibile archiviare temporaneamente un'istanza locale dell'applicazione in esecuzione. Un archivio locale è accessibile solo dall'istanza locale. Se l'istanza viene riavviata in un hardware diverso, ad esempio in caso di errore o di manutenzione dell'hardware, i dati nell'archivio locale non seguiranno l'istanza. Se per l'applicazione è richiesta una durabilità affidabile dei dati e si desidera condividere i dati tra istanze oppure accedere ai dati esternamente ad Azure, si consideri invece l'utilizzo di un account del Servizio di archiviazione Azure o il database SQL di Microsoft Azure.

database SQL di Azure offre funzionalità di elaborazione dati tramite query, transazioni e stored procedure che vengono eseguite sul lato server. All'applicazione vengono restituiti solo i risultati. Se si dispone di un'applicazione che richiede l'elaborazione dei dati e che implica operazioni di join e relazionali per dati di dimensioni limitate, il database SQL di Azure rappresenta una scelta appropriata. Se si dispone invece di un'applicazione mediante la quale vengono archiviati e recuperati grandi set di dati di cui non è richiesta l'elaborazione, la scelta migliore è rappresentata dall'archiviazione tabelle di Azure.

Il limite di dimensioni del database SQL di Azure è attualmente impostato su 500 GB per il livello Premium. Il database SQL di Azure è notevolmente più costoso dell'archiviazione di Azure. È quindi consigliabile spostare i dati BLOB nell'archiviazione BLOB di Azure. In questo modo è possibile ridurre la pressione sul limite delle dimensioni del database, nonché il costo operativo. Per informazioni sulle offerte e sui nuovi livelli di servizio di Azure, leggere la pagina relativa ai livelli di servizio (edizioni) del database SQL di Azure.

Analogamente a SQL Server, in database SQL di Azure viene esposta un'interfaccia del flusso TDS per l'accesso a database basati su Transact-SQL. In questo modo, tramite le applicazioni del database è possibile utilizzare database SQL di Azure in modo analogo a SQL Server.

A differenza dell'amministrazione di SQL Server, in database SQL di Azure l'amministrazione logica viene separata dall'amministrazione fisica. Gli utenti continuano ad amministrare database, account di accesso, utenti e ruoli, mentre l'hardware fisico, ad esempio dischi rigidi, server e spazio di archiviazione, vengono amministrati e configurati da Microsoft. Poiché l'intera amministrazione fisica viene gestita da Microsoft, vi sono alcune differenze tra database SQL di Azure e SQL Server in termini di amministrazione, provisioning, supporto Transact-SQL, modello di programmazione e funzionalità.

Nell'elenco seguente viene fornita una panoramica dettagliata di alcune delle differenze principali:

  • Dimensioni database

    Nel database SQL di Azure sono attualmente disponibili due edizioni:

    • Edizioni Web, in dimensioni da 1 e 5 GB.

    • Edizioni Business, in dimensioni da 10, 20, 30, 40, 50, 100, 150 GB.

    • Nell'edizione Premium è supportato un database fino a un massimo di 500 GB.

    È importante controllare le dimensioni del database in uso e la modalità con cui rientrano nei requisiti di database utilizzati da database SQL di Azure. Se il database è più grande rispetto alla limitazione delle dimensioni del database SQL di Azure, è necessario esaminare il database e valutare se è possibile suddividerlo in database più piccoli, ossia eseguire un partizionamento orizzontale, oppure spostare i dati di grandi dimensioni nell'archiviazione BLOB di Azure. Per ulteriori informazioni sul partizionamento orizzontale di database, vedere la pagina relativa alla scalabilità orizzontale di database SQL di Azure .

  • Autenticazione

    database SQL di Azure supporta solo l'autenticazione di SQL. È necessario considerare se devono essere apportate modifiche allo schema di autenticazione utilizzato dall'applicazione. Per ulteriori informazioni relative alle limitazioni sulla sicurezza, vedere Linee guida e limitazioni sulla sicurezza.

  • Versione del database di SQL Server

    Il database SQL di Azure è basato su SQL Server 2014. Se si desidera eseguire la migrazione dei database di SQL Server 2000 o di SQL Server 2005 nel database SQL di Azure, è necessario verificare che tali database siano compatibili con SQL Server 2014. La strategia migliore consiste nell'eseguire la migrazione da SQL Server 2014 al database SQL di Azure. È possibile eseguire un aggiornamento locale a SQL Server 2014 prima di eseguire la migrazione a database SQL di Azure. Per ulteriori informazioni sulla migrazione da versioni precedenti di SQL Server, vedere le pagine relative all'aggiornamento a SQL Server 2014 e alla preparazione all'aggiornamento a Microsoft SQL Server 2014.

  • Schema

    database SQL di Azure non supporta gli heap. Per poter inserire i dati è necessario innanzitutto che in ogni tabella sia disponibile un indice cluster. Per ulteriori informazioni sul requisito dell'indice cluster, vedere la pagina relativa al database SQL di Azure.

  • Supporto Transact-SQL

    Il database SQL di Microsoft Azure supporta un subset del linguaggio Transact-SQL. È necessario modificare lo script in modo da includere solo le istruzioni Transact-SQL supportate prima di distribuire il database in database SQL di Azure. Per ulteriori informazioni, vedere la pagina relativa alla guida di riferimento per Transact-SQL (motore di database).

  • Istruzione USE

    In database SQL di Azure tramite l'istruzione USE non è possibile eseguire il passaggio tra database. Per modificare i database, è necessario connettersi direttamente al database.

  • Determinazione dei prezzi

    Il prezzo per la sottoscrizione di database SQL di Azure è per database ed è basato sull'edizione. Inoltre, vi sono costi aggiuntivi per volume di trasferimento dei dati a ogni ingresso o uscita dei dati dal data center. È possibile scegliere di eseguire il codice dell'applicazione in locale e connettersi a database SQL di Azure nel data center oppure eseguire il codice dell'applicazione in Azure, ospitato nello stesso data center di database SQL di Azure. L'esecuzione del codice dell'applicazione in Azure consente di evitare i costi aggiuntivi per il trasferimento dei dati. In entrambi i casi, è necessario tener conto che la latenza di rete di Internet non può essere ridotta con nessuno dei modelli. Per ulteriori informazioni, vedere la pagina relativa alla panoramica dei prezzi.

  • Limitazioni delle funzionalità

    Alcune delle funzionalità di SQL Server non sono attualmente supportate da database SQL di Azure, incluse le seguenti: SQL Agent, ricerca full-text, Service Broker, backup e ripristino, Common Language Runtime e SQL Server Integration Services. Per un elenco dettagliato, vedere Limitazioni delle funzionalità di SQL Server. Per informazioni sulle opzioni di backup e ripristino, leggere la pagina relativa al backup e ripristino del database SQL di Azure.

Quando si utilizza un database basato su cloud come database SQL di Azure, vengono richieste connessioni in Internet o altre reti complesse. Per questo motivo, è consigliabile essere preparati a gestire interruzioni impreviste di connessioni.

Nel database SQL di Azure è disponibile un servizio di database multi-tenant su larga scala nelle risorse condivise. Per garantire a tutti i clienti del database SQL di Azure un'esperienza ottimale, la connessione al servizio potrebbe essere chiusa a causa di diverse condizioni.

Di seguito è riportato un elenco delle cause di interruzioni di connessione:

  • Latenza di rete

    La latenza provoca un aumento del tempo necessario per il trasferimento dei dati a database SQL di Azure. Il modo migliore per ridurre questo effetto è trasferire i dati utilizzando più flussi simultanei. Tuttavia, l'efficienza della parallelizzazione viene limitata dalla larghezza di banda della rete.

    Tramite database SQL di Azure è possibile creare il database in data center differenti. In base al percorso e alla connettività di rete, si riceveranno latenze di rete diverse tra il percorso e ognuno dei data center. Per facilitare la riduzione della latenza di rete, selezionare un data center più vicino alla maggior parte degli utenti. Per informazioni sulla misurazione della latenza di rete, vedere la pagina relativa al test della latenza di client nel database SQL di Azure.

    L'hosting del codice dell'applicazione in Azure consente di ottimizzare le prestazioni dell'applicazione, in quanto viene ridotta la latenza di rete associata alle richieste dei dati dell'applicazione a database SQL di Azure.

    Riducendo i round trip in rete è inoltre possibile facilitare la riduzione dei problemi correlati alla rete.

  • Failover del database

    Tramite database SQL di Azure viene eseguita la replica di più copie ridondanti dei dati in più server fisici per gestire la disponibilità dei dati e la continuità aziendale. In caso di aggiornamenti o errori hardware, tramite database SQL di Azure viene fornito il failover automatico per ottimizzare la disponibilità dell'applicazione. Attualmente, tramite alcune azioni di failover viene provocata la chiusura improvvisa di una sessione.

  • Bilanciamento del carico

    Il servizio di bilanciamento del carico in database SQL di Azure garantisce l'utilizzo ottimale dei server fisici e dei servizi nei data center. Quando l'utilizzo della CPU, la latenza di input/output (I/O) o il numero di thread di lavoro occupati per un computer supera i valori di soglia, è possibile che in database SQL di Azure le transazioni vengano terminate e che le sessioni vengano disconnesse.

  • Limitazione

    Per garantire una condivisione appropriata delle risorse da parte dei sottoscrittori e che tramite nessuno di questi vengano monopolizzate risorse a spese di altri sottoscrittori, in database SQL di Azure è possibile chiudere o limitare le connessioni del sottoscrittore in determinate condizioni. Tramite il servizio di limitazione del motore in database SQL di Azure vengono monitorati continuamente determinati valori di soglia delle prestazioni per valutare l'integrità del sistema. Inoltre, è possibile stabilire livelli diversi di limitazione a sottoscrittori specifici in base all'impatto che essi avranno sull'integrità del sistema.

    I valori di soglia delle prestazioni seguenti vengono monitorati dalla limitazione del motore in database SQL di Azure:

    • Percentuale dello spazio allocato a un database fisico del database SQL di Azure in uso. Le percentuali di limite software e hardware sono uguali.

    • Percentuale di spazio allocato per i file di log di database SQL di Azure in uso. I file di log sono condivisi tra i sottoscrittori. Le percentuali di limite software e hardware sono diverse.

    • Millisecondi di ritardo in caso di scrittura in un'unità di registro. Le percentuali di limite software e hardware sono diverse.

    • Millisecondi di ritardo in caso di lettura di file di dati. Le percentuali di limite software e hardware sono uguali.

    • Utilizzo del processore. Le percentuali di limite software e hardware sono uguali.

    • Dimensioni di singoli database correlate alle dimensioni massime consentite per sottoscrizione del database. Le percentuali di limite software e hardware sono uguali.

    • Numero totale di thread di lavoro tramite cui vengono servite le richieste attive ai database. Le percentuali di limite software e hardware sono diverse. Se questo valore di soglia viene superato, i criteri di selezione dei database da bloccare sono diversi rispetto ad altri valori di soglia. È più probabile che i database in cui viene utilizzato il numero più elevato di thread di lavoro siano candidati per la limitazione rispetto a database in cui si verificano frequenze di traffico più elevate.

Per ulteriori informazioni, vedere la pagina relativa alla gestione della connessione al database SQL di Azure e la pagina sulla guida relativa all'elasticità e alle prestazioni del database SQL di Azure.

Il modo migliore per gestire la perdita di connessione è ristabilire quest'ultima e, successivamente, eseguire di nuovo la query o i comandi non riusciti. Per ulteriori informazioni, vedere la pagina relativa al framework di gestione di errori temporanei.

Vi sono poche operazioni eseguibili nei database per migliorare le prestazioni della migrazione:

  • Ritardo della creazione di indici non cluster o disabilitazione degli indici non cluster. Gli indici aggiuntivi creati prima del caricamento dei dati possono aumentare in modo significativo il tempo impiegato per caricare la stessa quantità di dati.

  • Disabilitazione di trigger e applicazione di vincoli alla verifica. I trigger possono essere attivati quando l'inserimento di una riga in una tabella determina il reinserimento della riga in un'altra tabella. Il trigger può causare ritardi. Inoltre, è possibile che non si desideri reinserire questi tipi di inserimento.

  • Le prestazioni dell'importazione bulk sono migliori se i dati importati vengono ordinati in base all'indice cluster della tabella. Per ulteriori informazioni, vedere Controllo dell'ordinamento durante l'importazione bulk di dati.

Tramite SQL Server Integration Services (SSIS) e l'utilità bcp è possibile eseguire una migrazione efficace dei dati di grandi dimensioni.

Quando si caricano dati di questo tipo in database SQL di Azure, è consigliabile dividerli in più flussi simultanei per ottenere prestazioni migliori.

Per impostazione predefinita, tutte le righe incluse nel file di dati vengono importate come un unico batch. Per distribuire le righe fra più batch, specificare le dimensioni del batch, quando disponibili. Se la transazione per un batch non viene completata correttamente, viene eseguito il rollback solo degli inserimenti dal batch corrente. I batch già importati dalle transazioni di cui è stato eseguito il commit non sono influenzati in caso di esito negativo. È consigliabile testare una varietà di impostazioni di dimensioni di batch per lo scenario e l'ambiente specifici per individuare le dimensioni ottimali del batch.

Sono disponibili vari strumenti per la migrazione del database a database SQL di Azure. In generale, la migrazione del database comporta la migrazione dello schema e dei dati e per ognuna di queste operazioni sono disponibili strumenti di supporto. È anche possibile utilizzare l'API della copia bulk per creare la propria applicazione di caricamento dati personalizzata.

 

Strumenti

Schema

Controllo di compatibilità di database SQL di Azure

Dati

Efficienza del trasferimento dati

Nota

Pacchetto di applicazione livello dati

No

N/D

  • Entità contenente tutti gli oggetti di database, ma nessun dato

  • Supporto database SQL di Azure completo

Importazione/Esportazione di BACPAC dell'applicazione livello dati

Buona

  • Esportazione/Importazione di applicazione livello dati con in più dati con DAC Framework

  • Servizio per supporto di solo cloud disponibile

  • Esempi di applicazione livello dati di SQL disponibili in CodePlex.

Procedura guidata Genera script in SSMS

Alcuni

Scarse

  • Disponibilità dell'opzione esplicita per la generazione di script di database SQL di Azure

  • Buona per database di piccole dimensioni

bcp

No

N/D

Buona

  • Trasferimento efficiente di dati alla tabella esistente

  • Trasferimento di una sola tabella tramite un singolo comando bcp

Migrazione guidata database SQL di Azure

Buona

  • Grandi funzionalità, ad esempio la valutazione di file di traccia

  • Applicazione open source su CodePlex

  • Non supportata da Microsoft

SQL Server Integration Services

No

N/D

Buona

  • Livelli di flessibilità massima

  • Trasferimento diretto tra origini dati senza destinazione di file

Importazione/Esportazione guidata SQL Server

No

N/D

Buona

  • Interfaccia utente semplice in SSIS; disponibile anche in SSMS

database SQL di Azure Migration Assistant può essere utilizzato per la migrazione di un database da Access, MySQL, Oracle, Sybase a database SQL di Azure.

Con Microsoft Codename "Data Transfer" è possibile trasferire dati in file di Excel o CSV a database SQL di Azure.

Per eseguire la migrazione di dati da un'istanza del database SQL di Azure a un'altra istanza del database SQL di Azure, è possibile utilizzare la funzionalità di copia del database SQL di Azure.

Il database SQL di Azure supporta una funzionalità di copia del database. In questo modo è possibile creare un nuovo database nel database SQL di Azure che è una copia coerente dal punto di vista transazionale di un database esistente. Per copiare un database, è necessario connettersi al database master del server database SQL di Azure in cui verrà creato il nuovo database e utilizzare il comando CREATE DATABASE:

CREATE DATABASE destination_database_name AS COPY OF 
[source_server_name.]source_database_name

Il nuovo database può trovarsi nello stesso server o in uno differente. Il ruolo dell'utente che esegue questa istruzione deve essere dbmanager nel server di destinazione, per creare un nuovo database, e dbowner nel database di origine. Per ulteriori informazioni, vedere Copia di database nel database SQL di Azure.

Le applicazioni livello dati (DAC) sono state introdotte in SQL Server 2008 R2, con supporto dello strumento per sviluppatori in Visual Studio 2010. Si tratta di applicazioni utili per comprimere lo schema, il codice e la configurazione di un database per la distribuzione in un altro server. Quando un'applicazione livello dati è pronta per la distribuzione, viene compilata in un pacchetto di applicazione livello dati (con estensione bacpac), cioè un file compresso contenente le definizioni dell'applicazione livello dati nel formato XML. A partire da SQL Server Management Studio è possibile esportare lo schema del database in un pacchetto di applicazione livello dati e, successivamente, distribuire il pacchetto in database SQL di Azure.

noteNota
Il formato DACPAC è diverso da quello BACPAC. Con il formato BACPAC è possibile estendere il formato DACPAC per includere un file di metadati e i dati di tabella codificati da JSON (JavaScript Object Notation), oltre al contenuto del file DACPAC standard. Il formato BACPAC viene illustrato nella sezione relativa all'importazione/esportazione dell'applicazione livello dati.

È possibile modificare il pacchetto di applicazione livello dati tramite Visual Studio 2010 prima della distribuzione. Nel progetto di applicazione livello dati è possibile specificare script di pre-distribuzione e di post-distribuzione. Si tratta di script Transact-SQL tramite i quali è possibile eseguire qualsiasi azione, tra cui l'inserimento di dati negli script di post-distribuzione. Tuttavia, non è consigliato inserire una grande quantità di dati tramite un pacchetto di applicazione livello dati.

L'applicazione livello dati viene fornita con SQL Server 2008 R2. Sono disponibili due passaggi principali per l'esecuzione della migrazione dello schema di database di SQL Server a database SQL di Azure:

  1. Estrarre un pacchetto di applicazione livello dati da un database di SQL Server:

    La procedura guidata Estrai applicazione livello dati può essere utilizzata per compilare un pacchetto di applicazione livello dati basato su un database esistente. Nel pacchetto di applicazione livello dati sono inclusi gli oggetti selezionati dal database e gli oggetti a livello di istanza associati, ad esempio gli account di accesso tramite cui viene eseguito il mapping agli utenti del database.

    Di seguito viene riportata una schermata dell'apertura della procedura guidata:



    Nella procedura guidata sono inclusi i seguenti passaggi principali:

    1. Impostare le proprietà dell'applicazione livello dati, tra cui il nome, la versione, la descrizione e il percorso del file di pacchetto dell'applicazione livello dati.

    2. Verificare che tutti gli oggetti di database sono supportati da un'applicazione livello dati.

    3. Compilare il pacchetto.

    Un'applicazione livello dati può solo essere estratta da un database in database SQL di Azure o SQL Server 2005 Service Pack 4 (SP4) o versioni successive. Non è possibile estrarre un'applicazione livello dati se il database include oggetti non supportati nell'applicazione livello dati o utenti contenuti. Per ulteriori informazioni sui tipi di oggetti supportati in un'applicazione livello dati, vedere Supporto dell'applicazione livello dati per oggetti e versioni di SQL Server.

  2. Distribuire il pacchetto di applicazione livello dati in database SQL di Azure:

    Per distribuire un pacchetto di applicazione livello dati è possibile utilizzare la procedura guidata Distribuisci applicazione livello dati. È necessario innanzitutto connettersi al server database SQL di Azure da SQL Server Management Studio. Tramite la procedura guidata viene creato il database qualora non sia disponibile. Con la procedura guidata è possibile distribuire il pacchetto di applicazione livello dati nell'istanza del motore di database associata al nodo selezionato in Gerarchia Esplora oggetti. Nella schermata seguente, ad esempio, viene distribuito il pacchetto in SQL Server denominato maqqarly23.database.windows.net:

    ImportantImportante
    È consigliabile esaminare il contenuto di un pacchetto di applicazione livello dati prima di distribuirlo in produzione, specialmente quando il pacchetto distribuito non è stato sviluppato nella propria organizzazione. Per ulteriori informazioni, vedere Convalida di un pacchetto di applicazioni livello dati.

    Nella procedura guidata sono inclusi i seguenti passaggi principali:

    1. Selezionare il pacchetto di applicazione livello dati.

    2. Convalidare il contenuto del pacchetto.

    3. Configurare le proprietà di distribuzione del database, in cui specificare database SQL di Azure.

    4. Distribuire il pacchetto.

Invece di attenersi alla procedura guidata è possibile utilizzare PowerShell con il metodo dacstore.install() per eseguire la migrazione dello schema a database SQL di Azure.

Un'applicazione livello dati è un'unità autonoma per lo sviluppo, la distribuzione e la gestione di oggetti di livello dati. Tramite l'applicazione livello dati gli sviluppatori di livello dati e gli amministratori di database possono comprimere oggetti di Microsoft SQL Server, inclusi oggetti di database e oggetti istanza, in una singola entità chiamata pacchetto di applicazione livello dati (file con estensione dacpac). Con il formato BACPAC è possibile estendere il formato DACPAC per includere un file di metadati e i dati di tabella codificati da JSON (JavaScript Object Notation), oltre al contenuto del file DACPAC standard. È possibile comprimere il database di SQL Server in un file con estensione bacpac e utilizzarlo per eseguire la migrazione del database a database SQL di Azure.

noteNota
I file DACPAC e BACPAC sono simili, ma in realtà destinati a scenari molto diversi. Tramite DACPAC viene eseguita l'acquisizione e la distribuzione dello schema. L'utilizzo primario consiste nella distribuzione in un ambiente di sviluppo, di test e, successivamente, di produzione.

Tramite BACPAC viene eseguita l'acquisizione dello schema e dei dati. È l'equivalente logico di un backup di database e non può essere utilizzato per aggiornare i database esistenti. I casi di utilizzo primario di un file BACPAC consistono nello spostamento di un database da un server a un altro (o a database SQL di Azure) e nell'archiviazione di un database esistente in un formato aperto.

Il servizio di importazione ed esportazione per il database SQL di Azure è disponibile per tutti. Mediante questo servizio è possibile importare o esportare direttamente file BACPAC da un database SQL di Azure all'archiviazione BLOB di Azure e viceversa. Il servizio di importazione/esportazione per database SQL di Azure offre alcuni endpoint REST pubblici per l'inoltro di richieste.

Nel portale di gestione della piattaforma Azure è disponibile un'interfaccia per chiamare il servizio di importazione/esportazione per database SQL di Azure.

SQL Server Management Studio non supporta attualmente l'esportazione di un database in un file BACPAC. Per importare ed esportare dati è possibile utilizzare l'API dell'applicazione livello dati.

Negli esempi dell'applicazione livello dati di SQL viene illustrato come utilizzare l'API di Data-tier Application Framework per eseguire la migrazione di database da SQL Server a database SQL di Azure. Nel pacchetto sono disponibili due utilità della riga di comando e il relativo codice sorgente:

  • Gli strumenti lato client di importazione/esportazione dell'applicazione livello dati possono essere utilizzati per esportare e importare file bacpac.

  • Il client del servizio di importazione ed esportazione dell'applicazione livello dati può essere utilizzato per chiamare il servizio di importazione ed esportazione del database SQL di Azure per importare ed esportare file bacpac dall'archiviazione BLOB di Azure al database SQL di Azure e viceversa.

    Per copiare un file bacpac nell'archiviazione BLOB di Azure è possibile utilizzare Microsoft Codename "Data Transfer". Per ulteriori informazioni, vedere la sezione relativa a Microsoft Codename Data Transfer.

noteNota
La possibilità di importare ed esportare dati in database SQL di Azure tramite il framework dell'applicazione livello dati è attualmente disponibile solo come esempi di CodePlex. Gli strumenti sono supportati solo dalla community.

In questa sezione viene illustrato l'utilizzo degli strumenti client degli esempi dell'applicazione livello dati di SQL per eseguire la migrazione del database da SQL Server a database SQL di Azure.

È possibile scaricare questi esempi da CodePlex. Per eseguire l'esempio è inoltre necessario installare Data-Tier Application Framework nel computer.

Prima di utilizzare gli strumenti per eseguire la migrazione del database, è necessario creare innanzitutto l'istanza di database SQL di Azure di destinazione. Sono disponibili due passaggi per l'utilizzo dello strumento per la migrazione:

  1. Esportare un database di SQL Server

    Si supponga che sia disponibile un database in esecuzione in SQL Server 2014 per cui un utente dispone dell'accesso di sicurezza integrato. Il database può essere esportato in un file con estensione bacpac chiamando il file EXE di esempio con gli argomenti seguenti:

    DacCli.exe -s serverName -d databaseName -f C:\filePath\exportFileName.bacpac -x -e
    
  2. Importare il pacchetto in database SQL di Azure

    Una volta esportato, il file di esportazione può essere importato in un database SQL di Azure con i seguenti argomenti:

    DacCli.exe -s serverName.database.windows.net -d databaseName -f C:\filePath\exportFileName.bacpac -i -u userName -p password
    

La procedura guidata Genera script può essere utilizzata per creare script Transact-SQL per database di SQL Server e/o oggetti correlati all'interno del database selezionato. Successivamente, gli script possono essere utilizzati per trasferire lo schema e/o i dati al database SQL di Azure.

La procedura guidata Genera script viene installata con SQL Server 2008 R2 e può essere aperta da SQL Server Management Studio 2008 R2 Nella schermata seguente viene mostrato come aprire la procedura guidata:

Nella procedura guidata sono inclusi i seguenti passaggi principali:

  1. Scegliere gli oggetti da esportare.

  2. Impostare le opzioni di generazione script. È possibile salvare lo script in un file, negli Appunti o nella nuova finestra di query. In alternativa, è possibile pubblicarlo in un servizio Web.

  3. Impostare le opzioni di generazione script avanzate.

    Per impostazione predefinita, lo script viene generato per l'istanza autonoma di SQL Server. Per modificare la configurazione, è necessario fare clic sul pulsante Avanzate della finestra di dialogo Imposta opzioni di generazione script, quindi impostare la proprietà Script per il tipo di motore di database su Database SQL.



    Inoltre, è possibile impostare Tipi di dati per cui generare lo script su una delle seguenti opzioni in base ai requisiti: Solo schema, Solo dati, Schema e dati.

Al termine dell'operazione di creazione, lo script può essere modificato prima di eseguirlo nel database SQL di Azure per trasferire il database.

L'utilità bcp è un'utilità della riga di comando progettata per prestazioni elevate di caricamento bulk in SQL Server o database SQL di Azure. Non è uno strumento di migrazione, né consente di estrarre o creare schemi. È necessario innanzitutto trasferire lo schema a database SQL di Azure utilizzando uno degli strumenti di migrazione dello schema.

noteNota
L'utilità bcp può essere utilizzata per eseguire il backup e il ripristino dei dati in database SQL di Azure.

noteNota
Inoltre, viene utilizzata dalla Migrazione guidata database SQL di Azure.

L'utilità bcp viene fornita con SQL Server. La versione fornita con SQL Server 2014 è completamente supportata dal database SQL di Azure.

Sono disponibili due passaggi per l'utilizzo di bcp:

  1. Esportare i dati in un file di dati.

    Per esportare i dati al di fuori di un database di SQL Server, è possibile eseguire l'istruzione riportata di seguito al prompt dei comandi:

    bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
    
    Tramite il parametro out viene indicata la copia dei dati esternamente a SQL Server. Tramite il parametro -n viene eseguita l'operazione di copia bulk utilizzando i tipi di dati nativi del database. Tramite il parametro -q viene eseguita l'istruzione SET QUOTED_IDENTIFIERS ON nella connessione tra l'utilità bcp e l'istanza di SQL Server.

  2. Importare il file di dati in database SQL di Azure

    Per importare i dati in database SQL di Azure, è necessario innanzitutto creare lo schema nel database di destinazione e, successivamente, eseguire l'utilità bcp da un prompt dei comandi:

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b batchSize
    
    Tramite il parametro -b viene specificato il numero di righe per ogni batch di dati importati. Ogni batch viene importato e registrato come transazione distinta che importa l'intero batch prima del commit. Identificare le dimensioni batch migliori. L'utilizzo delle dimensioni batch è consigliabile per ridurre la perdita di connessione al database SQL di Azure durante la migrazione dei dati.

Di seguito sono indicate alcune procedure consigliate in caso di utilizzo dell'utilità bcp per trasferire una grande quantità di dati.

  1. Utilizzare l'opzione -N per trasferire i dati nella modalità nativa in modo che non sia necessaria alcuna conversione del tipo di dati.

  2. Utilizzare l'opzione -b per specificare le dimensioni batch. Per impostazione predefinita, tutte le righe incluse nel file di dati vengono importate come un unico batch. In caso di errore della transazione, viene eseguito il rollback solo degli inserimenti dal batch corrente.

  3. Utilizzare l'opzione –h "TABLOCK, ORDER(…)". Tramite –h "TABLOCK" viene specificata la richiesta di un blocco a livello di tabella per l'aggiornamento bulk per la durata dell'operazione di caricamento bulk. In caso contrario, viene acquisito un blocco di riga. Grazie a questa opzione è possibile ridurre gli effetti di contesa dei blocchi per la tabella. Tramite l'opzione –h "ORDER(…)" viene specificato l'ordinamento dei dati nel file di dati. Le prestazioni dell'importazione bulk sono migliori se i dati importati vengono ordinati in base all'indice cluster della tabella.

È possibile utilizzare le opzioni -F e -L per specificare la prima e l'ultima riga di un file flat per il caricamento. In questo modo è possibile evitare di dover suddividere fisicamente il file di dati per ottenere il caricamento di più flussi.

La Migrazione guidata del database SQL di Azure è uno strumento dell'interfaccia utente open source che facilita la migrazione dei database di SQL Server 2005/2008 o versioni successive al database SQL di Azure. Oltre alla migrazione dei dati, questo strumento può essere utilizzato anche per identificare tutti i problemi di compatibilità, correggerli dove possibile, nonché segnalare all'utente tutti i problemi noti.

Nella Migrazione guidata database SQL di Azure è inclusa la logica per gestire la perdita di connessione. Tramite la procedura guidata è possibile suddividere le transazioni in gruppi più piccoli e procedere all'esecuzione fino all'interruzione della connessione da parte di database SQL di Azure. Se si verifica un errore di connessione nella procedura guidata, tramite quest'ultima viene ristabilita una nuova connessione con database SQL di Azure e l'elaborazione viene ripresa dopo il completamento dell'ultimo comando. Nello stesso modo, in caso di utilizzo di bcp per caricare i dati in database SQL di Azure, tramite la procedura guidata i dati vengono bloccati in sezioni più piccole e viene utilizzata la logica di tentativi per determinare l'ultimo record caricato correttamente prima che la connessione venisse chiusa. Successivamente, tramite bcp viene riavviato il caricamento dati con il set successivo di record.

noteNota
La Migrazione guidata database SQL di Azure è uno strumento open source compilato e supportato dalla community.

La Migrazione guidata database SQL di Azure può essere scaricata da http://sqlazuremw.codeplex.com. Decomprimere il pacchetto nel computer locale ed eseguire SQLAzureMW.exe. Di seguito è riportata una schermata dell'applicazione:

Nella procedura guidata sono inclusi i passaggi seguenti:

  1. Selezionare il processo da completare tramite la procedura guidata.

  2. Selezionare il codice sorgente da includere nello script.

  3. Selezionare gli oggetti di database da includere nello script.

  4. Generare lo script. È possibile modificare lo script in un secondo momento.

  5. Immettere le informazioni per connettersi al server di destinazione. È possibile creare l'istanza di database SQL di Azure di destinazione.

  6. Eseguire lo script nel server di destinazione.

SQL Server Integration Services (SSIS) può essere utilizzato per eseguire un'ampia gamma di attività di migrazione dei dati. È uno strumento potente in caso di utilizzo di più origini e destinazioni di dati eterogenei che offre supporto per trasformazioni dei dati e flussi di lavoro complessi tra l'origine e la destinazione. SSIS non è disponibile come servizio di Azure analogo al database SQL di Azure. È possibile eseguire pacchetti SSIS in un'istanza locale di SQL Server per trasferire dati al database SQL di Azure. È inoltre possibile eseguire pacchetti SSIS in un'istanza di SQL Server in esecuzione in una macchina virtuale di Azure per trasferire i dati nel database SQL di Microsoft Azure. Tuttavia, anche IaaS per SQL è un'opzione per l'hosting di SSIS.

L'Importazione/Esportazione guidata SSIS consente all'utente di creare pacchetti tramite cui i dati vengono spostati da una singola origine dati a una destinazione senza alcuna trasformazione. Tramite la procedura guidata è possibile spostare rapidamente i dati da una varietà di tipi di origine a una varietà di tipi di destinazione, inclusi file di testo e altre istanze di SQL Server. Per ulteriori informazioni, vedere Procedura: utilizzare Integration Services per eseguire la migrazione di un database al database SQL di Azure.

È necessario utilizzare la versione SQL Server 2008 R2 o successiva di SSIS per connettersi al database SQL di Azure.

Negli adattatori ADO.NET è disponibile il supporto richiesto per database SQL di Azure. Tramite questo supporto è possibile eseguire il caricamento bulk dei dati specifico per il database SQL di Azure. Utilizzare l'adattatore di destinazione ADO.NET per trasferire i dati a database SQL di Azure. La connessione al database SQL di Microsoft Azure mediante OLEDB non è supportata.

Dal momento che è possibile un eventuale errore del pacchetto dovuto alla limitazione o a un problema di rete, è consigliabile progettare i pacchetti in modo che possano essere ripresi nel punto di errore, anziché eseguire il riavvio del pacchetto. Per ulteriori informazioni, consultare la pagina relativa a SSIS per Azure e spostamento di dati ibrido.

Quando si configura la destinazione ADO.NET, assicurarsi di utilizzare l'opzione "Utilizzare Inserimento bulk quando possibile". In questo modo è possibile utilizzare le funzionalità di caricamento bulk per migliorare le prestazioni di trasferimento. . Per ulteriori informazioni, consultare la pagina relativa alla guida di ottimizzazione e operativa di SSIS.

Importazione/Esportazione guidata SQL Server offre il metodo più semplice per creare un pacchetto di SQL Server Integration Services per un'importazione o esportazione semplice. Per ulteriori informazioni, vedere Procedura: utilizzare l'Importazione/Esportazione guidata per eseguire la migrazione di un database al database SQL di Azure.

La procedura guidata supporta le origini dati seguenti:

  • Provider di dati .NET Framework per ODBC

  • Provider di dati .NET Framework per Oracle

  • Provider di dati .NET Framework per SQL Server

  • Origine file flat

  • Provider OLE DB Microsoft per Analysis Services 10.0

  • Provider Microsoft OLE DB per Search

  • Provider Microsoft OLE DB per SQL Server

  • SQL Native Client

  • SQL Server Native Client 10.0

Tramite l'Importazione/Esportazione guidata SQL Server è possibile eseguire solo il trasferimento dei dati. Prima di utilizzare la procedura guidata, è necessario trasferire lo schema utilizzando uno dei relativi strumenti di migrazione, vale a dire la procedura guidata Genera script o il pacchetto di applicazione livello dati.

noteNota
In un computer a 64 bit con Integration Services viene installata la versione a 64 bit dell'Importazione/Esportazione guidata SQL Server (DTSWizard.exe). Alcune origini dati dispongono tuttavia solo di un provider a 32 bit. Per utilizzare queste origini dati, potrebbe essere necessario installare ed eseguire la versione a 32 bit della procedura guidata. Per installare la versione a 32 bit della procedura guidata, selezionare Strumenti client o Business Intelligence Development Studio durante l'installazione.

Microsoft Codename "Data Transfer" è un servizio cloud mediante il quale è possibile trasferire i dati dal computer in uso in un database SQL di Azure o nell'archiviazione BLOB di Azure. È possibile caricare qualsiasi formato dati nell'archiviazione BLOB di Azure, nonché i dati archiviati in formato delimitato da virgole (CSV) o Microsoft Excel (XLSX) in un database SQL di Azure. Quando si caricano dati in un database SQL di Azure, questi vengono trasformati in tabelle di database.

Il servizio di trasferimento dei dati è accessibile all'indirizzo https://web.datatransfer.azure.com/. Nella home page è possibile importare dati, nonché gestire i set di dati e gli archivi in uso.

Nell'importazione dei dati nel processo di database SQL di Azure sono inclusi i passaggi seguenti:

  • Immettere le credenziali di database SQL di Azure.

  • Scegliere un file da trasferire.

  • Analizzare il file di dati e successivamente trasferire i dati.

SQL Server Migration Assistant (SSMA) è una famiglia di prodotti tramite cui è possibile ridurre i costi e i rischi della migrazione dai database di Oracle, Sybase, MySQL e Microsoft Access a database SQL di Azure o SQL Server. SSMA consente di automatizzare tutti gli aspetti della migrazione inclusa l'analisi della valutazione della migrazione, la conversione degli schemi e delle istruzioni SQL, la migrazione dei dati nonché il test della migrazione.

SSMA è un download Web. Per scaricare la versione più recente, vedere la pagina del prodotto SQL Server Migration Tools. Al momento della stesura di questo documento, le versioni più recenti sono le seguenti:

SSMS viene installato utilizzando una procedura guidata basata su Windows Installer. SSMA è gratuito, ma è necessario scaricare un codice di registrazione. Al termine dell'installazione e dell'esecuzione dell'applicazione, tramite quest'ultima viene richiesto di registrare e scaricare il codice di registrazione.

Nel processo di migrazione di SSMA per Access sono inclusi i passaggi seguenti:

  1. Creare una nuova migrazione guidata. Assicurarsi di selezionare database SQL di Azure nella casella Esegui migrazione a.

  2. Aggiungere i database di Access.

  3. Selezionare gli oggetti di Access da migrare.

  4. Connettersi a database SQL di Azure.

  5. Collegare le tabelle. Se si desidera utilizzare le applicazioni Access esistenti con il database SQL di Azure, è possibile collegare le tabelle di Access originali alle tabelle del database SQL di Azure migrate. Tramite il collegamento è possibile modificare il database di Access in modo che nelle query, nei form, nei report e nelle pagine di accesso ai dati vengano utilizzati i dati disponibili nel database SQL di Azure anziché i dati presenti nel database di Access.

  6. Convertire gli oggetti selezionati.

  7. Caricare gli oggetti convertiti nel database SQL di Azure.

  8. Eseguire la migrazione dei dati per gli oggetti di Access selezionati.

Vedere anche

Mostra:
© 2014 Microsoft