Eseguire la migrazione dei datiMigrate Your Data

È possibile spostare dati da differenti origini a SQL Data Warehouse con diversi strumenti,Data can be moved from different sources into your SQL Data Warehouse with a variety tools. ad esempio usando ADF Copy, SSIS e bcp.ADF Copy, SSIS, and bcp can all be used to achieve this goal. Tuttavia, con l'aumento della quantità di dati, prendere in considerazione la possibilità di suddividere il processo di migrazione in passaggi.However, as the amount of data increases you should think about breaking down the data migration process into steps. Ciò consente di ottimizzare ogni passaggio sia per le prestazioni che per la resilienza in modo da garantire una migrazione uniforme dei dati.This affords you the opportunity to optimize each step both for performance and for resilience to ensure a smooth data migration.

Questo articolo descrive in primo luogo i semplici scenari di migrazione di ADF Copy, SSIS e bcp,This article first discusses the simple migration scenarios of ADF Copy, SSIS, and bcp. per poi analizzare come ottimizzare la migrazione.It then look a little deeper into how the migration can be optimized.

ADF CopyAzure Data Factory (ADF) copy

ADF Copy fa parte di Azure Data Factory.ADF Copy is part of Azure Data Factory. È possibile usare ADF Copy per esportare i dati in file flat che si trovano in un'archiviazione locale, in file flat remoti contenuti nell'archiviazione BLOB di Azure o direttamente in SQL Data Warehouse.You can use ADF Copy to export your data to flat files residing on local storage, to remote flat files held in Azure blob storage or directly into SQL Data Warehouse.

Se i dati sono contenuti in file flat, è necessario trasferirli nel BLOB di archiviazione di Azure prima di avviare un caricamento in SQL Data Warehouse.If your data starts in flat files, then you will first need to transfer it to Azure storage blob before initiating a load it into SQL Data Warehouse. Dopo il trasferimento dei dati nell'archiviazione BLOB di Azure, è possibile scegliere di usare nuovamente ADF Copy per effettuare il push dei dati in SQL Data Warehouse.Once the data is transferred into Azure blob storage you can choose to use ADF Copy again to push the data into SQL Data Warehouse.

Anche PolyBase rappresenta un'opzione a prestazioni elevate per il caricamento dei dati.PolyBase also provides a high-performance option for loading the data. Questo non significa però che debbano essere usati due strumenti anziché uno.However, that does mean using two tools instead of one. Se si vuole ottenere prestazioni ottimali, usare PolyBase.If you need the best performance then use PolyBase. Se invece si vuole usare un unico strumento (e il volume di dati non è elevato), ADF è la soluzione ideale.If you want a single tool experience (and the data is not massive) then ADF is your answer.

Leggere l'articolo seguente per alcuni esempi di ADF.Head over to the following article for some great ADF samples.

Integration ServicesIntegration Services

Integration Services (SSIS) è uno strumento sofisticato e flessibile di Extract Transform and Load (ETL) che supporta flussi di lavoro complessi, la trasformazione dei dati e diverse opzioni di caricamento dei dati.Integration Services (SSIS) is a powerful and flexible Extract Transform and Load (ETL) tool that supports complex workflows, data transformation, and several data loading options. Usare SSIS per trasferire semplicemente dati in Azure o come parte di una migrazione più ampia.Use SSIS to simply transfer data to Azure or as part of a broader migration.

Nota

SSIS può esportare in UTF-8 senza byte order mark nel file.SSIS can export to UTF-8 without the byte order mark in the file. Per configurare questa funzionalità, è necessario prima usare il componente colonna derivata per convertire i dati di tipo carattere nel flusso di dati per usare la tabella codici 65001 UTF-8.To configure this you must first use the derived column component to convert the character data in the data flow to use the 65001 UTF-8 code page. Dopo la conversione delle colonne, scrivere i dati nell'adattatore di destinazione di file flat verificando che sia stata selezionata la tabella codici 65001 per il file.Once the columns have been converted, write the data to the flat file destination adapter ensuring that 65001 has also been selected as the code page for the file.

SSIS si connette a SQL Data Warehouse nello stesso modo in cui si connetterebbe a una distribuzione di SQL Server.SSIS connects to SQL Data Warehouse just as it would connect to a SQL Server deployment. La connessione tuttavia dovrà usare una gestione connessioni ADO.NET.However, your connections will need to be using an ADO.NET connection manager. È anche necessario configurare l'impostazione per "utilizzare l'inserimento di massa quando disponibile" per ottimizzare la velocità effettiva.You should also take care to configure the "Use bulk insert when available" setting to maximize throughput. Fare riferimento all'articolo relativo all'adattatore di destinazione ADO.NET per altre informazioni su questa proprietàPlease refer to the ADO.NET destination adapter article to learn more about this property

Nota

La connessione ad Azure SQL Data Warehouse mediante OLEDB non è supportata.Connecting to Azure SQL Data Warehouse by using OLEDB is not supported.

Esiste inoltre sempre la possibilità che si verifichi l'errore di un pacchetto per problemi di rete o limitazione delle richieste.In addition, there is always the possibility that a package might fail due to throttling or network issues. Progettare i pacchetti in modo che sia possibile ripartire dal punto in cui si è verificato l'errore, senza dover ripetere il lavoro completato prima dell'errore.Design packages so they can be resumed at the point of failure, without redoing work that completed before the failure.

Per altre informazioni, vedere la documentazione relativa a SSIS.For more information consult the SSIS documentation.

bcpbcp

L'utilità della riga di comando bcp è progettata per l'importazione e l'esportazione di dati di file flat.bcp is a command-line utility that is designed for flat file data import and export. Durante l'esportazione di dati possono essere eseguite trasformazioni.Some transformation can take place during data export. Per eseguire trasformazioni semplici, usare una query per selezionare e trasformare i dati.To perform simple transformations use a query to select and transform the data. Dopo l'esportazione, i file flat possono quindi essere caricati direttamente nel database di SQL Data Warehouse di destinazione.Once exported, the flat files can then be loaded directly into the target the SQL Data Warehouse database.

Nota

Spesso è una buona idea incapsulare le trasformazioni usate durante l'esportazione di dati in una vista nel sistema di origine.It is often a good idea to encapsulate the transformations used during data export in a view on the source system. In questo modo viene mantenuta la logica e il processo è ripetibile.This ensures that the logic is retained and the process is repeatable.

I vantaggi derivanti dall'uso dell'utilità bcp sono i seguenti:Advantages of bcp are:

  • Semplicità.Simplicity. I comandi di bcp sono semplici da creare ed eseguire.bcp commands are simple to build and execute
  • Possibilità di riavviare il processo di caricamento.Re-startable load process. Dopo l'esportazione, il caricamento può essere eseguito un numero illimitato di volte.Once exported the load can be executed any number of times

Le limitazioni dell'utilità bcp sono le seguenti:Limitations of bcp are:

  • Funziona solo con file flat tabulari.bcp works with tabulated flat files only. Non funziona ad esempio con file XML o JSON.It does not work with files such as xml or JSON
  • Le funzionalità di trasformazione dei dati sono limitate alla sola fase di esportazione e sono semplici per natura.Data transformation capabilities are limited to the export stage only and are simple in nature
  • L'utilità bcp non è stata adattata per essere efficace durante il caricamento di dati su Internet.bcp has not been adapted to be robust when loading data over the internet. Qualsiasi instabilità della rete può causare un errore di caricamento.Any network instability may cause a load error.
  • L'utilità bcp si basa sullo schema presente nel database di destinazione prima del caricamento.bcp relies on the schema being present in the target database prior to the load

Per altre informazioni, vedere l'articolo relativo all'uso di bcp per caricare dati in SQL Data Warehouse.For more information, see Use bcp to load data into SQL Data Warehouse.

Ottimizzazione della migrazione dei datiOptimizing data migration

Un processo di migrazione di dati SQLDW può essere suddiviso in modo efficace in tre passaggi discreti:A SQLDW data migration process can be effectively broken down into three discrete steps:

  1. Esportazione dei dati di origineExport of source data
  2. Trasferimento dei dati in AzureTransfer of data to Azure
  3. Caricamento nel database SQLDW di destinazioneLoad into the target SQLDW database

È possibile ottimizzare singolarmente ogni passaggio per creare un processo di migrazione solido, nuovamente avviabile e resiliente che ottimizza le prestazioni a ogni passaggio.Each step can be individually optimized to create a robust, re-startable and resilient migration process that maximizes performance at each step.

Ottimizzazione del caricamento dei datiOptimizing data load

Esaminando per un momento queste operazioni in ordine inverso, il modo più rapido per caricare i dati è tramite PolyBase.Looking at these in reverse order for a moment; the fastest way to load data is via PolyBase. L'ottimizzazione per un processo di caricamento PolyBase prevede prerequisiti per i passaggi precedenti, pertanto è consigliabile capire questo aspetto dall'inizio.Optimizing for a PolyBase load process places prerequisites on the preceding steps so it's best to understand this upfront. Vale a dire:They are:

  1. Codifica dei file di datiEncoding of data files
  2. Formato dei file di datiFormat of data files
  3. Percorso dei file di datiLocation of data files

CodificaEncoding

PolyBase richiede file di dati con codifica UTF-8 o UTF-16FE.PolyBase requires data files to be UTF-8 or UTF-16FE.

Formato dei file di datiFormat of data files

PolyBase impone un carattere di terminazione di riga fisso \n o una nuova riga.PolyBase mandates a fixed row terminator of \n or newline. I file di dati devono essere conformi a questo standard.Your data files must conform to this standard. Non esistono restrizioni per i caratteri di terminazione di colonna o stringa.There aren't any restrictions on string or column terminators.

Sarà necessario definire ogni colonna nel file come parte della tabella esterna in PolyBase.You will have to define every column in the file as part of your external table in PolyBase. Assicurarsi che tutte le colonne esportate siano necessarie e che i tipi siano conformi agli standard richiesti.Make sure that all exported columns are required and that the types conform to the required standards.

Vedere l'articolo sulla [migrazione di uno schema] per informazioni su tipi di dati supportati.Please refer back to the [migrate your schema] article for detail on supported data types.

Percorso dei file di datiLocation of data files

SQL Data Warehouse usa PolyBase per caricare i dati esclusivamente dall'archiviazione BLOB di Azure.SQL Data Warehouse uses PolyBase to load data from Azure Blob Storage exclusively. I dati pertanto devono essere stati prima trasferiti nell'archiviazione BLOB.Consequently, the data must have been first transferred into blob storage.

Ottimizzazione del trasferimento dei datiOptimizing data transfer

Una delle fasi più lente della migrazione dei dati è costituita dal trasferimento dei dati in Azure.One of the slowest parts of data migration is the transfer of the data to Azure. Non solo la larghezza di banda di rete può costituire un problema, ma anche l'affidabilità della rete può gravemente compromettere lo stato di avanzamento.Not only can network bandwidth be an issue but also network reliability can seriously hamper progress. Per impostazione predefinita, la migrazione dei dati in Azure viene eseguita tramite Internet ed è pertanto probabile che si verifichino errori di trasferimento.By default migrating data to Azure is over the internet so the chances of transfer errors occurring are reasonably likely. Questi errori tuttavia possono richiedere che i dati vengano inviati di nuovo completamente o in parte.However, these errors may require data to be re-sent either in whole or in part.

Fortunatamente sono disponibili diverse opzioni per migliorare la velocità e la resilienza di questo processo:Fortunately you have several options to improve the speed and resilience of this process:

ExpressRouteExpressRoute

È possibile provare a usare ExpressRoute per velocizzare il trasferimento.You may want to consider using ExpressRoute to speed up the transfer. ExpressRoute consente di stabilire una connessione privata ad Azure in modo che la connessione non passi attraverso la rete Internet pubblica.ExpressRoute provides you with an established private connection to Azure so the connection does not go over the public internet. Non si tratta di un passaggio obbligatorio.This is by no means a mandatory step. Determina tuttavia un miglioramento della velocità effettiva quando si effettua il push dei dati in Azure da una struttura locale o da una condivisione di percorso.However, it will improve throughput when pushing data to Azure from an on-premises or co-location facility.

I vantaggi derivanti dall'uso di ExpressRoute sono i seguenti:The benefits of using ExpressRoute are:

  1. Maggiore affidabilitàIncreased reliability
  2. Maggiore velocità di reteFaster network speed
  3. Minore latenza di reteLower network latency
  4. Maggiore sicurezza di retehigher network security

ExpressRoute è utile per numerosi scenari e non solo per la migrazione.ExpressRoute is beneficial for a number of scenarios; not just the migration.

Per altre informazioniInterested? e i dati relativi ai prezzi, vedere la documentazione relativa a ExpressRoute.For more information and pricing please visit the ExpressRoute documentation.

Servizio Importazione/Esportazione di AzureAzure Import and Export Service

Il servizio Importazione/Esportazione di Azure è un processo di trasferimento dati progettato per trasferimenti di un numero elevato (GB++) o ingente (TB++) di dati in Azure.The Azure Import and Export Service is a data transfer process designed for large (GB++) to massive (TB++) transfers of data into Azure. Comporta la scrittura dei dati su dischi e l'invio in un data center di Azure.It involves writing your data to disks and shipping them to an Azure data center. Il contenuto dei dischi verrà quindi caricato nei BLOB di archiviazione di Azure per conto dell'utente.The disk contents will then be loaded into Azure Storage Blobs on your behalf.

Segue una panoramica del processo di importazione/esportazione:A high-level view of the import export process is as follows:

  1. Configurare un contenitore dell'archiviazione BLOB di Azure per ricevere i dati.Configure an Azure Blob Storage container to receive the data
  2. Esportare i dati nell'archiviazione locale.Export your data to local storage
  3. Copiare i dati su unità disco rigido SATA II/III da 3,5 pollici usando lo [strumento Importazione/Esportazione di Azure].Copy the data to 3.5 inch SATA II/III hard disk drives using the [Azure Import/Export Tool]
  4. Creare un processo di importazione usando il servizio Importazione/Esportazione di Azure fornendo i file journal generati dallo [strumento Importazione/Esportazione di Azure].Create an Import Job using the Azure Import and Export Service providing the journal files produced by the [Azure Import/Export Tool]
  5. Inviare i dischi al data center di Azure prescelto.Ship the disks your nominated Azure data center
  6. I dati vengono trasferiti nel contenitore dell'archiviazione Blob di Azure.Your data is transferred to your Azure Blob Storage container
  7. Caricare i dati in SQLDW usando PolyBase.Load the data into SQLDW using PolyBase

Utilità AZCopyAZCopy utility

L'utilità AZCopy è uno strumento ideale per il trasferimento dei dati nei BLOB di Archiviazione di Azure.The AZCopy utility is a great tool for getting your data transferred into Azure Storage Blobs. È progettato per il trasferimento di dati di piccole (MB++) e grandi dimensioni (GB+ +).It is designed for small (MB++) to very large (GB++) data transfers. AZCopy è stato progettato anche per garantire una velocità effettiva resiliente durante il trasferimento dei dati in Azure e pertanto rappresenta un'ottima scelta per il passaggio relativo al trasferimento dei dati.AZCopy has also been designed to provide good resilient throughput when transferring data to Azure and so is a great choice for the data transfer step. Dopo il trasferimento, è possibile caricare i dati con PolyBase in SQL Data Warehouse.Once transferred you can load the data using PolyBase into SQL Data Warehouse. È anche possibile incorporare AZCopy nei pacchetti SSIS usando un'attività "Execute Process".You can also incorporate AZCopy into your SSIS packages using an "Execute Process" task.

Per usare AZCopy, sarà necessario prima scaricarlo e installarlo.To use AZCopy you will first need to download and install it. Sono disponibili una versione di produzione e una versione di anteprima.There is a production version and a preview version available.

Per caricare un file dal file system, è necessario un comando simile al seguente:To upload a file from your file system you will need a command like the one below:

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /Pattern:abc.txt

Segue un riepilogo generale del processo:A high-level process summary could be:

  1. Configurare un contenitore di BLOB di archiviazione di Azure per ricevere i dati.Configure an Azure storage blob container to receive the data
  2. Esportare i dati nell'archiviazione locale.Export your data to local storage
  3. Copiare tramite AZCopy i dati nel contenitore dell'archiviazione BLOB di Azure.AZCopy your data in the Azure Blob Storage container
  4. Caricare i dati in SQL Data Warehouse usando PolyBase.Load the data into SQL Data Warehouse using PolyBase

Documentazione completa disponibile: AZCopy.Full documentation available: AZCopy.

Ottimizzazione dell'esportazione dei datiOptimizing data export

Oltre a garantire che l'esportazione sia conforme ai requisiti previsti da PolyBase, è anche possibile cercare di ottimizzare l'esportazione dei dati per migliorare ulteriormente il processo.In addition to ensuring that the export conforms to the requirements laid out by PolyBase you can also seek to optimize the export of the data to improve the process further.

Compressione dei datiData compression

PolyBase è in grado di leggere i dati compressi in file gzip.PolyBase can read gzip compressed data. Se è possibile comprimere i dati in file gzip, verrà ridotta la quantità di dati di cui viene effettuato il push in rete.If you are able to compress your data to gzip files then you will minimize the amount of data being pushed over the network.

File multipliMultiple files

La suddivisione di tabelle di grandi dimensioni in più file non solo consente di migliorare la velocità di esportazione, ma favorisce anche la possibilità di riavviare i trasferimenti e semplifica la gestibilità complessiva dei dati dopo che sono stati trasferiti nell'archiviazione BLOB di Azure.Breaking up large tables into several files not only helps to improve export speed, it also helps with transfer re-startability, and the overall manageability of the data once in the Azure blob storage. Una delle numerose funzionalità interessanti di PolyBase è costituita dalla possibilità di leggere tutti i file all'interno di una cartella considerandola come una tabella.One of the many nice features of PolyBase is that it will read all the files inside a folder and treat it as one table. È pertanto opportuno isolare i file per ogni tabella nella relativa cartella.It is therefore a good idea to isolate the files for each table into its own folder.

PolyBase supporta anche una funzionalità nota come "attraversamento di cartelle ricorsivo".PolyBase also supports a feature known as "recursive folder traversal". È possibile usare questa funzionalità per migliorare ulteriormente l'organizzazione dei dati esportati e ottimizzare la gestione dei dati.You can use this feature to further enhance the organization of your exported data to improve your data management.

Per altre informazioni sul caricamento dei dati con PolyBase, vedere Caricare dati con PolyBase in SQL Data Warehouse.To learn more about loading data with PolyBase, see Use PolyBase to load data into SQL Data Warehouse.

Passaggi successiviNext steps

Per altre informazioni sulla migrazione, vedere Eseguire la migrazione della soluzione in SQL Data Warehouse.For more about migration, see Migrate your solution to SQL Data Warehouse. Per altri suggerimenti sullo sviluppo, vedere la panoramica dello sviluppo.For more development tips, see development overview.