Come configurare Amazon RDS per SQL Server nell'attività di copia
Questo articolo descrive come utilizzare l'attività di copia in una pipeline di dati per copiare dati da Amazon RDS per SQL Server.
Configurazione supportata
Per la configurazione di ogni scheda nell'attività Copy, leggere le rispettive sezioni seguenti.
Generali
Per configurare la scheda di impostazioni Generali, vedere la guida alle impostazioni Generali.
Origine
Le proprietà seguenti sono supportate per Amazon RDS per SQL Server nella scheda Origine di un'attività di copia.
Sono richieste le seguenti proprietà:
Tipo di archivio dati: selezionare Esterno.
Connessione: selezionare una connessione Amazon RDS per SQL Server dall'elenco delle connessioni. Se la connessione non esiste, creare una nuova connessione Amazon RDS per SQL Server selezionando Nuovo.
Tipo di connessione: selezionare Amazon RDS per SQL Server.
Usa query: specificare il modo in cui leggere i dati. È possibile scegliere Tabella, Query o Stored procedure. L'elenco seguente descrive la configurazione di ogni impostazione:
Tabella: legge i dati dalla tabella specificata. Selezionare la tabella di origine dall'elenco a discesa o selezionare Modifica per immetterla manualmente.
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: utilizzare la stored procedure che legge i dati dalla tabella di origine. L'ultima istruzione SQL deve essere un'istruzione SELECT nella stored procedure.
Nome stored procedure: selezionare la stored procedure o specificare il nome della stored procedure manualmente quando si seleziona 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. È possibile selezionare Importa parametri per ottenere i parametri della stored procedure.
In Avanzate, è possibile specificare i campi seguenti:
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: Read committed, Read uncommitted, Repeatable read, Serializable, Snapshot. Se non è specificato, viene utilizzato il livello di isolamento predefinito del database. Per altri dettagli, vedere IsolationLevel Enum.
Opzione di partizione: specificare le opzioni di partizionamento dei dati utilizzate per caricare i dati da Amazon RDS per SQL Server. 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 Amazon RDS per SQL Server è controllato dal Grado di parallelismo della copia nella scheda delle impostazioni dell'attività di copia.
Nessuna: scegliere questa impostazione per non usare una partizione.
Partizioni fisiche della tabella: quando si usa una partizione fisica, la colonna di partizione e il meccanismo vengono determinati automaticamente in base alla definizione della tabella fisica.
Intervallo dinamico: quando si usa la query con la funzionalità parallela abilitata, è necessario il parametro di partizione dell'intervallo (
?DfDynamicRangePartitionCondition
). Query di esempio:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
.Nome colonna di partizionamento: specificare il nome della colonna di origine nel tipo integer o date/datetime (
int
,smallint
,bigint
,date
,smalldatetime
,datetime
,datetime2
odatetimeoffset
) che verrà usata nel partizionamento per intervalli per la copia parallela. Se non specificato, la chiave primaria della tabella viene rilevata automaticamente e usata come colonna di partizione.Se si usa una query per recuperare i dati di origine, associare
?DfDynamicRangePartitionCondition
nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela dal database SQL.Limite superiore 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 verranno partizionate e copiate. Se non specificato, l'attività Copy rileva automaticamente il valore. Per un esempio, vedere la sezione Copia parallela dal database SQL.
Limite inferiore 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 verranno partizionate e copiate. Se non specificato, l'attività Copy rileva automaticamente il valore. Per un esempio, vedere la sezione Copia parallela dal database SQL.
Colonne aggiuntive: aggiungere altre colonne di dati per archiviare il percorso relativo o il valore statico dei file di origine. L'espressione è supportata per la seconda opzione.
Notare i punti seguenti:
- Se per l'origine è specificata una query, l'attività di copia esegue questa query sull'origine Amazon RDS per SQL Server per ottenere i dati. In alternativa, è possibile specificare una stored procedure indicando il nome della stored procedure e i parametri della stored procedure se quest'ultima accetta parametri.
- Quando si usa la stored procedure nell'origine per recuperare dati, tenere presente che se la stored procedure è progettata per restituire schemi diversi quando viene passato un valore di parametro diverso, è possibile che si verifichi un errore o un risultato imprevisto durante l'importazione dello schema dall'interfaccia utente o quando si copiano dati nel database SQL con la creazione automatica della tabella.
Mapping
Per la configurazione della scheda Mapping, accedere a Configurare i mapping nella scheda Mapping.
Impostazione
Per la configurazione della scheda Impostazioni, vedere Configurare le altre impostazioni nella scheda Impostazioni.
Copia parallela dal database SQL
Il connettore Amazon RDS per SQL Server 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 di Amazon RDS per SQL Server 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 da Amazon RDS per SQL Server.
È preferibile abilitare la copia parallela con il partizionamento dei dati specialmente quando si caricano notevoli quantità di dati dal database di Amazon RDS per SQL Server. 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 usata la colonna della 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, l'attività Copy rileva automaticamente i valori e può richiedere molto tempo a seconda dei valori MIN e MAX. È preferibile specificare un limite superiore e un limite inferiore. 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
Vedere la tabella seguente per il riepilogo e altre informazioni per l'attività di copia di Amazon RDS per SQL Server.
Informazioni sull'origine
Nome | Descrizione | valore | Richiesto | Proprietà script JSON |
---|---|---|---|---|
Tipo di archivio dati | Tipo di archivio dati in uso. | Esterno | Sì | / |
Collegamento | Collegamento all'archivio dati di origine. | < collegamento personale > | Sì | connection |
Tipo di connessione | Tipo di connessione. Selezionare Amazon RDS per SQL Server. | Servizi Desktop remoto di Amazon per SQL Server | Sì | / |
Usa query | Query SQL personalizzata per leggere i dati. | • Table • Query • Stored procedure |
Sì | / |
Tabella | Tabella dati di origine. | < nome della tabella di destinazione> | No | schema table |
Query | Query SQL personalizzata per leggere i dati. | < la query in uso > | No | sqlReaderQuery |
Nome della stored procedure | Questa proprietà definisce il nome della 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 > | No | sqlReaderStoredProcedureName |
Parametro di stored procedure | Questi parametri sono relativi alla 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. | < coppie nome o valore > | No | storedProcedureParameters |
Timeout query | Il timeout per l'esecuzione del comando di query. | timespan (il valore predefinito è 120 minuti) |
No | queryTimeout |
Livello di isolamento | Specifica il comportamento di blocco della transazione per l'origine SQL. | • Read Committed • Read uncommitted • Repeatable read • Serializable • Snapshot |
No | isolationLevel: • ReadCommitted • ReadUncommitted • RepeatableRead • Serializable • Snapshot |
Opzione di partizione | Opzioni di partizionamento dei dati usate per caricare dati da Amazon RDS per SQL Server. | • Nessuna (impostazione predefinita) • Partizioni fisiche della tabella • Intervallo dinamico |
No | partitionOptions: • Nessuno (impostazione predefinita) • PhysicalPartitionsOfTable • DynamicRange |
Nome colonna di partizione | Nome della colonna di origine nel tipo integer o date/datetime (int , smallint , bigint , date , smalldatetime , datetime , datetime2 o datetimeoffset ) che verrà usata nel partizionamento per intervalli per la copia parallela. Se non specificato, la chiave primaria della tabella viene rilevata automaticamente e usata come colonna di partizione. Se si usa una query per recuperare i dati di origine, associare ?DfDynamicRangePartitionCondition nella clausola WHERE. |
< nomi delle colonne di partizione in uso > | No | partitionColumnName |
Limite superiore partizione | 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 verranno partizionate e copiate. Se non specificato, l'attività Copy rileva automaticamente il valore. | < limite superiore della partizione in uso > | No | partitionUpperBound |
Limite inferiore partizione | 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 verranno partizionate e copiate. Se non specificato, l'attività Copy rileva automaticamente il valore. | < limite inferiore della partizione in uso > | No | partitionLowerBound |
Colonne aggiuntive | Aggiungere altre colonne di dati per archiviare il percorso relativo o il valore statico dei file di origine. L'espressione è supportata per la seconda opzione. | • Name • Valore |
No | additionalColumns: • name • valore |