Configurare il database SQL di Azure in un'attività di copia
Questo articolo descrive come utilizzare l'attività di copia nella pipeline di dati per copiare dati da e verso il database SQL di Azure.
Configurazione supportata
Per la configurazione di ogni scheda nell'attività di copia, consultare rispettivamente le sezioni seguenti.
Generali
Consultare la guida sulle Impostazioni generali per configurare la scheda Impostazioni generali.
Origine
Le seguenti proprietà sono supportate per il database SQL di Azure nella scheda Origine di un'attività di copia.
Sono richieste le seguenti proprietà:
- Tipo di archivio dati: selezionare Esterno.
- Connessione: selezionare una connessione al database SQL di Azure dall'elenco delle connessioni. Se la connessione non esiste, creare una nuova connessione al database SQL di Azure selezionando Nuovo.
- Tipo di connessione: selezionare Database SQL di Azure.
- Tabella: selezionare la tabella nel database dall'elenco a discesa. In alternativa, selezionare Modifica per immettere manualmente il nome della tabella.
- Anteprima dati: selezionare Anteprima dati per visualizzare in anteprima i dati nella tabella.
In Avanzato è possibile specificare i seguenti campi:
Usa query: è possibile scegliere Tabella, Query o Stored procedure. L'elenco seguente descrive la configurazione di ciascuna impostazione:
Tabella: se si seleziona questo pulsante, i dati vengono letti dalla tabella specificata in Tabella.
Query: specificare la query SQL personalizzata per leggere i dati. Un esempio è
select * from MyTable
. In alternativa, selezionare l'icona a forma di matita da modificare nell'editor di codice.Stored procedure: usare la stored procedure che legge i dati dalla tabella di origine. L'ultima istruzione SQL deve essere un'istruzione SELECT nella stored procedure.
Nome della stored procedure: selezionare la stored procedure o specificare manualmente il nome della stored procedure quando si seleziona la casella Modifica per leggere i dati dalla tabella di origine.
Parametri della stored procedure: specificare i valori per i parametri della stored procedure. I valori consentiti sono coppie nome-valore. I nomi e le maiuscole/minuscole dei parametri devono corrispondere ai nomi e alle maiuscole/minuscole dei parametri della stored procedure.
Timeout query (minuti): specificare il timeout per l'esecuzione del comando di query, il valore predefinito è 120 minuti. Se per questa proprietà è impostato un parametro, i valori consentiti sono intervalli di tempo, ad esempio "02:00:00" (120 minuti).
Livello di isolamento: specificare il comportamento di blocco delle transazioni per l'origine SQL. I valori consentiti sono: None, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable o Snapshot. Se non specificato, viene utilizzato il livello di isolamento Nessuno. Per altri dettagli, vedere enumerazione IsolationLevel.
Opzione di partizione: specificare le opzioni di partizionamento dei dati usate per caricare i dati dal database SQL di Azure. I valori consentiti sono: Nessuna (impostazione predefinita), Partizioni fisiche della tabella e Intervallo dinamico. Quando è abilitata un'opzione di partizione (ovvero diversa da Nessuna), il grado di parallelismo per caricare contemporaneamente i dati da un database SQL di Azure è controllato dall'impostazione di copia parallela nell'attività di copia.
Nessuna: scegliere questa impostazione per non usare una partizione.
Partizioni fisiche della tabella: quando si utilizza una partizione fisica, la colonna e il meccanismo della partizione vengono determinati automaticamente in base alla definizione della tabella fisica.
Intervallo dinamico: quando si usa la query con la copia parallela abilitata, è necessario il parametro di partizione a intervalli(
?DfDynamicRangePartitionCondition
). Query di esempio:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
.- Nome della colonna di partizione: specificare il nome della colonna di origine in formato intero o di tipo data/datetime (
int
,smallint
,bigint
,date
,smalldatetime
,datetime
,datetime2
odatetimeoffset
) utilizzata dal partizionamento per intervalli per la copia parallela. Se non è specificato, l’indice o la chiave primaria della tabella vengono rilevati automaticamente e usati come colonna di partizione. - Limite massimo della partizione: specificare il valore massimo della colonna di partizione per la suddivisione dell'intervallo di partizioni. Questo valore viene usato per decidere lo stride di partizione, non per filtrare le righe nella tabella. Tutte le righe nella tabella o nel risultato della query vengono partizionate e copiate.
- Limite minimo della partizione: specificare il valore minimo della colonna di partizione per la suddivisione dell'intervallo di partizioni. Questo valore viene usato per decidere lo stride di partizione, non per filtrare le righe nella tabella. Tutte le righe nella tabella o nel risultato della query vengono partizionate e copiate.
- Nome della colonna di partizione: specificare il nome della colonna di origine in formato intero o di tipo data/datetime (
Colonne aggiuntive: aggiungere altre colonne di dati per archiviare il percorso relativo o il valore statico dei file di origine. Per quest'ultimo è supportata l'espressione. Per altre informazioni, vedere Aggiungere altre colonne durante la copia.
Destinazione
Le proprietà seguenti sono supportate per database SQL di Azure nella scheda Destinazione di un'attività di copia.
Sono richieste le seguenti proprietà:
- Tipo di archivio dati: selezionare Esterno.
- Connessione: selezionare una connessione al database SQL di Azure dall'elenco delle connessioni. Se la connessione non esiste, creare una nuova connessione al database SQL di Azure selezionando Nuovo.
- Tipo di connessione: selezionare Database SQL di Azure.
- Tabella: selezionare la tabella nel database dall'elenco a discesa. In alternativa, selezionare Modifica per immettere manualmente il nome della tabella.
- Anteprima dati: selezionare Anteprima dati per visualizzare in anteprima i dati nella tabella.
In Avanzato è possibile specificare i seguenti campi:
Comportamento di scrittura: definisce il comportamento in scrittura quando l'origine sono file provenienti da un archivio dati basato su file. È possibile scegliere Insert, Upsert o Stored procedure.
Insert: scegliere questa opzione se i dati di origine hanno inserimenti.
Upsert: scegliere questa opzione se i dati di origine hanno sia inserimenti che aggiornamenti.
Usa TempDB: specificare se utilizzare una tabella temporanea globale o una tabella fisica come tabella provvisoria per l’operazione upsert. Per impostazione predefinita, il servizio utilizza la tabella temporanea globale come tabella provvisoria e questa casella di controllo è selezionata.
Seleziona lo schema del database utente: quando la casella di controllo Usa TempDB non è selezionata, specificare lo schema provvisorio per la creazione di una tabella provvisoria se viene usata una tabella fisica.
Nota
È necessario disporre dell'autorizzazione per creare ed eliminare tabelle. Per impostazione predefinita, la tabella provvisoria condividerà lo stesso schema della tabella di destinazione.
Colonne chiave: specificare i nomi delle colonne per l'identificazione univoca delle righe. È possibile usare una singola chiave o una serie di chiavi. Se non specificato, viene usata la chiave primaria.
Stored procedure: utilizzare la stored procedure che definisce come applicare i dati di origine in una tabella di destinazione. Questa stored procedure viene richiamata per batch.
Nome della stored procedure: selezionare la stored procedure o specificare manualmente il nome della stored procedure quando si seleziona la casella Modifica per leggere i dati dalla tabella di origine.
Parametri della stored procedure: specificare i valori per i parametri della stored procedure. I valori consentiti sono coppie nome-valore. I nomi e le maiuscole/minuscole dei parametri devono corrispondere ai nomi e alle maiuscole/minuscole dei parametri della stored procedure.
Blocco tabella inserimento in blocco: scegliere Sì o No. Utilizzare questa impostazione per migliorare le prestazioni di copia durante un'operazione di inserimento in blocco in una tabella senza indici da più client. Per altre informazioni, vedere BULK INSERT (Transact-SQL)
Opzione tabella: specifica se creare automaticamente la tabella di destinazione, se la tabella non esiste, in base allo schema di origine. Scegliere Nessuna o Crea tabella automaticamente. La creazione automatica delle tabelle non è supportata quando la destinazione specifica una stored procedure.
Script di pre-copia: specificare uno script che l'attività di copia deve eseguire prima di scrivere i dati in una tabella di destinazione a ogni esecuzione. È possibile usare questa proprietà per pulire i dati precaricati.
Timeout batch di scrittura: specificare il tempo di attesa per il completamento dell'operazione di inserimento batch prima del timeout. I valori consentiti sono intervalli di tempo. Il valore predefinito è "00:30:00" (30 minuti).
Dimensione batch di scrittura: specificare il numero di righe da inserire nella tabella SQL per batch. Il valore consentito è integer (numero di righe). Per impostazione predefinita, il servizio determina in modo dinamico le dimensioni appropriate del batch in base alle dimensioni della riga.
Numero massimo di connessioni simultanee: specificare il limite massimo di connessioni simultanee stabilite all'archivio dati durante l'esecuzione dell'attività. Specificare un valore solo quando si desidera limitare le connessioni simultanee.
Disattiva l'analisi delle metriche delle prestazioni: questa impostazione viene usata per raccogliere metriche, ad esempio DTU, DWU, UR e così via, al fine di ottimizzare le prestazioni di copia e i relativi consigli. Se si è interessati a questo comportamento, selezionare questa casella di controllo.
Mapping
Per la configurazione della scheda Mapping, se non si applica database SQL di Azure con la creazione automatica della tabella come destinazione, vedere Mapping.
Se si applica database SQL di Azure con la creazione automatica della tabella come destinazione, ad eccezione della configurazione in Mapping, è possibile modificare il tipo per le colonne di destinazione. Dopo aver selezionato Importa schemi, è possibile specificare il tipo di colonna nella destinazione.
Ad esempio, il tipo per la colonna ID nell'origine è int ed è possibile modificarlo in tipo float quando si esegue il mapping sulla colonna di destinazione.
Impostazione
Per la configurazione della scheda Impostazioni, vedere Configurare le altre impostazioni nella scheda Impostazioni.
Copia parallela da database SQL di Azure
Il connettore di database SQL di Azure nell'attività di copia fornisce il partizionamento dei dati predefinito per copiare i dati in parallelo. È possibile trovare le opzioni di partizionamento dei dati nella tabella Origine dell'attività di copia.
Quando si abilita la copia partizionata, l'attività di copia esegue query parallele sull'origine del database SQL di Azure per caricare i dati in base alle partizioni. Il grado di parallelismo è controllato dal Grado di parallelismo della copia nella scheda delle impostazioni dell'attività di copia. Ad esempio, se si imposta il Grado di parallelismo della copia su quattro, il servizio genera ed esegue contemporaneamente quattro query in base all'opzione di partizione e alle impostazioni specificate e ogni query recupera una porzione di dati dal tuo database SQL di Azure.
Si consiglia di abilitare la copia parallela con il partizionamento dei dati, specialmente quando si caricano grandi quantità di dati dal database SQL di Azure. Di seguito sono riportate le configurazioni consigliate per i diversi scenari: Quando si copiano dati in un archivio dati basato su file, è consigliabile scrivere in una cartella come file multipli (specificare solo il nome della cartella); in tal caso, le prestazioni risultano migliori rispetto alla scrittura in un singolo file.
Scenario | Impostazioni consigliate |
---|---|
Caricamento completo da una tabella di grandi dimensioni, con partizioni fisiche. | Opzione di partizione: partizioni fisiche della tabella. Durante l'esecuzione, il servizio rileva automaticamente le partizioni fisiche e copia i dati in base alle partizioni. Per controllare se la tabella contenga o meno una partizione fisica, è possibile fare riferimento a questa query. |
Caricamento completo da una tabella di grandi dimensioni, senza partizioni fisiche, con una colonna integer o datetime per il partizionamento dei dati. | Opzioni di partizione: partizione a intervalli dinamici. Colonna partizione (facoltativo): specificare la colonna usata per il partizionamento dei dati. Se non specificato, viene utilizzata la colonna di indice o chiave primaria. Limite superiore partizione e limite inferiore partizione (facoltativo): specificare se si desidera determinare lo stride della partizione. Non si tratta di filtrare le righe nella tabella; tutte le righe della tabella verranno partizionate e copiate. Se non è specificato, le attività di copia rilevano automaticamente i valori. Ad esempio, se “ID” della colonna partizione include valori compresi tra 1 e 100 e si imposta come limite inferiore 20 e come limite superiore 80, con copia parallela 4, il servizio recupera i dati in base a 4 partizioni - ID nell'intervallo < = 20, [21, 50], [51, 80] e > = 81 rispettivamente. |
Caricamento di notevoli quantità di dati utilizzando una query personalizzata, senza partizioni fisiche, con una colonna integer o date/datetime per il partizionamento dei dati. | Opzioni di partizione: partizione a intervalli dinamici. Query: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> .Colonna di partizione: specificare la colonna usata per il partizionamento dei dati. Limite superiore partizione e limite inferiore partizione (facoltativo): specificare se si desidera determinare lo stride della partizione. Ciò non è utile a filtrare le righe nella tabella; tutte le righe del risultato della query verranno partizionate e copiate. Se non specificato, l'attività Copy rileva automaticamente il valore. Ad esempio, se la colonna di partizione "ID" include valori compresi tra 1 e 100 e si imposta il limite inferiore su 20 e il limite superiore su 80, con copia parallela come 4 il servizio recupera i dati per 4 partizioni - ID nell'intervallo <=20, [21, 50], [51, 80], e >=81, rispettivamente. Di seguito sono riportate altre query di esempio per diversi scenari: • Eseguire una query sull'intera tabella: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition • Eseguire una query da una tabella con selezione colonne e filtri aggiuntivi per la clausola where: SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> • Query con sottoquery: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> • Query con partizione nella sottoquery: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T |
Procedure consigliate per il caricamento di dati con opzione partizione:
- Scegliere una colonna distintiva come colonna partizione (ad esempio, chiave primaria o chiave univoca) per evitare l'asimmetria dei dati.
- Se la tabella include una partizione predefinita, usare l'opzione di partizione Partizioni fisiche della tabella per ottenere prestazioni migliori.
Query di esempio per controllare la partizione fisica
SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'
Se la tabella ha una partizione fisica, viene visualizzato "HasPartition" come "sì", come illustrato di seguito.
Riepilogo della tabella
Le tabelle seguenti contengono altre informazioni sull'attività di copia nel database SQL di Azure.
Origine
Nome | Descrizione | valore | Richiesto | Proprietà dello script JSON |
---|---|---|---|---|
Tipo di archivio dati | Tipo di archivio dati. | Esterno | Sì | / |
Connessione | Connessione all'archivio dati di origine. | <connessione personale> | Sì | connection |
Tipo di connessione | Tipo di connessione. Selezionare il database SQL di Azure. | Database SQL di Azure | Sì | / |
Tabella | Tabella dati di origine. | <nome della tabella di destinazione> | Sì | schema table |
Usa query | Query SQL personalizzata per leggere i dati. | • Nessuno • Query • Stored procedure |
No | • sqlReaderQuery • sqlReaderStoredProcedureName, storedProcedureParameters |
Timeout della query | Il timeout per l'esecuzione del comando di query, il valore predefinito è 120 minuti. | timespan | No | queryTimeout |
Livello di isolamento | Specifica il comportamento di blocco della transazione per l'origine SQL. | • Nessuno • ReadCommitted • ReadUncommitted • RepeatableRead • Serializable • Snapshot |
No | isolationLevel |
Opzione di partizione | Opzioni di partizionamento dei dati usate per caricare dati dal database SQL di Azure. | • Nessuno • Partizioni fisiche della tabella • Intervallo dinamico |
No | partitionOption: • PhysicalPartitionsOfTable • DynamicRange |
Colonne aggiuntive | Aggiungere altre colonne di dati per archiviare il percorso relativo o il valore statico dei file di origine. Per quest'ultimo è supportata l'espressione. | • Name • Valore |
No | additionalColumns: • nome • valore |
Destinazione
Nome | Descrizione | valore | Richiesto | Proprietà dello script JSON |
---|---|---|---|---|
Tipo di archivio dati | Tipo di archivio dati. | Esterno | Sì | / |
Connessione | Connessione all'archivio dati di destinazione. | <connessione personale > | Sì | connection |
Tipo di connessione | Tipo di connessione. Selezionare il database SQL di Azure. | Database SQL di Azure | Sì | / |
Tabella | Tabella dati di destinazione. | <nome della tabella di destinazione> | Sì | schema table |
Comportamento di scrittura | Definisce il comportamento di scrittura quando l'origine è costituita da file di un archivio dati basato su file. | • Insert • Upsert • Stored procedure |
No | writeBehavior: • insert • upsert • sqlWriterStoredProcedureName, sqlWriterTableType, storedProcedureParameters |
Blocco tabella inserimento in blocco | Utilizzare questa impostazione per migliorare le prestazioni di copia durante un'operazione di inserimento in blocco in una tabella senza indici da più client. | Sì o No | No | sqlWriterUseTableLock: true o false |
Opzione tabella | Specifica se creare automaticamente la tabella di destinazione, se non esiste, in base allo schema di origine. | • Nessuno • Crea tabella automaticamente |
No | tableOption: • autoCreate |
Script di pre-copia | Uno script che l'attività di copia deve eseguire prima di scrivere i dati in una tabella di destinazione a ogni esecuzione. È possibile usare questa proprietà per pulire i dati precaricati. | <script di pre-copia> (string) |
No | preCopyScript |
Timeout del batch di scrittura | Tempo di attesa per il completamento dell'operazione di inserimento batch prima del timeout. Il valore consentito è timespan. Il valore predefinito è "00:30:00" (30 minuti). | timespan | No | writeBatchTimeout |
Dimensione del batch di scrittura | Numero di righe da inserire nella tabella SQL per batch. Per impostazione predefinita, il servizio determina in modo dinamico le dimensioni appropriate del batch in base alle dimensioni della riga. | <numero di righe> (intero) |
No | writeBatchSize |
Numero massimo di connessioni simultanee | Limite massimo di connessioni simultanee stabilite all'archivio dati durante l'esecuzione dell'attività. Specificare un valore solo quando si desidera limitare le connessioni simultanee. | <limite massimo di connessioni simultanee> (intero) |
No | maxConcurrentConnections |
Disattiva l'analisi delle metriche delle prestazioni | Questa impostazione viene usata per raccogliere metriche, ad esempio DTU, DWU, UR e così via, per ottimizzare le prestazioni di copia e i relativi consigli. Se si è interessati a questo comportamento, selezionare questa casella di controllo. | selezionare o deselezionare | No | disableMetricsCollection: true o false |