Copiare i dati da Amazon RDS per SQL Server usando Azure Data Factory o Azure Synapse Analytics

Questo articolo illustra come usare l'attività Copy in Azure Data Factory e pipeline Azure Synapse per copiare dati da un database Amazon RDS per SQL Server. Per altre informazioni, leggere l'articolo introduttivo per Azure Data Factory o Azure Synapse Analytics.

Funzionalità supportate

Questo connettore Amazon RDS per SQL Server è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività Copy (origine/-) 7.3
Attività Lookup 7.3
Attività GetMetadata 7.3
Attività stored procedure 7.3

① Azure Integration Runtime ② Runtime di integrazione self-hosted

Per un elenco degli archivi dati supportati come origini o sink dall'attività di copia, vedere la tabella relativa agli archivi dati supportati.

In particolare, il connettore Amazon RDS per SQL Server supporta:

  • SQL Server versione 2005 e successive.
  • La copia dei dati tramite l'autenticazione di SQL o di Windows.
  • Come origine, il recupero dati tramite una query SQL o una stored procedure. È anche possibile scegliere di eseguire la copia parallela dall'origine di Amazon RDS per SQL Server. Per informazioni dettagliate, vedere la sezione Copia parallela dal database SQL.

Local DB di SQL Server Express non è supportato.

Prerequisiti

Se l'archivio dati si trova all'interno di una rete locale, una rete virtuale di Azure o un cloud privato virtuale di Amazon, è necessario configurare un runtime di integrazione self-hosted per connettersi.

Se l'archivio dati è un servizio dati del cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato solo agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere IP di Azure Integration Runtime nell'elenco Consentiti.

È anche possibile usare la funzionalitàruntime di integrazione della rete virtuale gestita in Azure Data Factory per accedere alla rete locale senza installare e configurare un runtime di integrazione self-hosted.

Per altre informazioni sui meccanismi di sicurezza di rete e sulle opzioni supportate da Data Factory, vedere strategie di accesso ai dati.

Operazioni preliminari

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Creare il servizio collegato di Amazon RDS per SQL Server tramite l’interfaccia utente

Usare la procedura seguente per creare un servizio collegato di Amazon RDS per SQL Server nell'interfaccia utente del portale di Azure.

  1. Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:

  2. Cercare Amazon RDS per SQL Server e selezionare il connettore Amazon RDS per SQL Server.

    Screenshot del connettore Amazon RDS per SQL Server.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Screenshot della configurazione per il servizio collegato di Amazon RDS per SQL Server.

Dettagli di configurazione del connettore

Le sezioni seguenti forniscono informazioni dettagliate sulle proprietà usate per definire entità delle pipeline di Data Factory e Synapse specifiche per il connettore del database Amazon RDS per SQL Server.

Proprietà del servizio collegato

Il connettore Amazon RDS per SQL Server nella versione consigliata supporta TLS 1.3. Fare riferimento a questa sezione per aggiornare la versione del connettore Amazon RDS per SQL Server da quella Legacy. Per informazioni dettagliate sulla proprietà, vedere le sezioni corrispondenti.

Nota

Amazon RDS per SQL Server Always Encrypted non è supportato nel flusso di dati.

Suggerimento

Se viene restituito l'errore con codice errore "UserErrorFailedToConnectToSqlServer" e un messaggio come "Il limite di sessioni per il database è XXX ed è stato raggiunto", aggiungere Pooling=false alla stringa di connessione e riprovare.

Queste proprietà generiche sono supportate per un servizio collegato di Amazon RDS per SQL Server quando si applica la versione consigliata:

Proprietà Descrizione Richiesto
type La proprietà del tipo deve essere impostata su AmazonRdsForSqlServer.
server Nome o indirizzo di rete dell'istanza di SQL Server a cui connettersi.
database Nome del database.
authenticationType Il tipo usato per l'autenticazione. I valori consentiti sono SQL (predefinito) e Windows. Passare alla sezione all'autenticazione pertinente in base alle proprietà e ai prerequisiti specifici.
alwaysEncryptedSettings Specificare le informazioni alwaysencryptedsettings necessarie per consentire ad Always Encrypted di proteggere i dati sensibili archiviati in Amazon RDS per SQL Server usando un'identità gestita o un'entità servizio. Per altre informazioni, vedere l'esempio JSON che segue la tabella e la sezione Uso di Always Encrypted. Se non specificato, l'impostazione predefinita per Always Encrypted è disabilitata. No
crittografare Indicare se la crittografia TLS è necessaria per tutti i dati inviati tra client e server. Opzioni: obbligatorio (per true, impostazione predefinita)/opzionale (per false)/strict. No
trustServerCertificate Indicare se il canale verrà crittografato bypassando la catena di certificati per convalidare l'attendibilità. No
hostNameInCertificate Nome host da usare quando viene convalidato il certificato del server per la connessione. Se non è specificato, per la convalida del certificato viene utilizzato il nome del server. No
connectVia Questo runtime di integrazione viene usato per connettersi all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se non specificato, viene usato il runtime di integrazione di Azure predefinito. No

Per altre proprietà di connessione, vedere la tabella seguente:

Proprietà Descrizione Richiesto
applicationIntent Il tipo di carico di lavoro dell'applicazione in caso di connessione a un server. I valori consentiti sono ReadOnly e ReadWrite. No
connectTimeout Tempo di attesa (in secondi) per una connessione al server prima della conclusione del tentativo e la generazione di un errore. No
connectRetryCount Numero di riconnessioni tentate dopo l'identificazione di un errore di connessione inattiva. Il valore deve essere un numero intero compreso tra 0 e 255. No
connectRetryInterval Intervallo di tempo, (espresso in secondi) tra ogni tentativo di riconnessione dopo l'identificazione di un errore di connessione inattiva. Il valore deve essere un numero intero compreso tra 1 e 60. No
loadBalanceTimeout Tempo minimo (in secondi) in cui la connessione rimane attiva nel pool di connessione prima di essere eliminata definitivamente. No
commandTimeout Tempo di attesa predefinito (in secondi) prima della conclusione del tentativo di esecuzione di un comando e della generazione di un errore. No
integratedSecurity I valori consentiti sono true o false. Quando si specifica false, indicare se userName e password sono specificati nella connessione. Quando si specifica true, indica se le credenziali dell'account di Windows corrente vengono usate per l'autenticazione. No
failoverPartner Nome o indirizzo di rete del server partner a cui connettersi se il server primario è inattivo. No
maxPoolSize Numero massimo di connessioni consentite nel pool di connessioni per la connessione specifica. No
minPoolSize Numero minimo di connessioni consentite nel pool di connessioni per la connessione specifica. No
multipleActiveResultSets I valori consentiti sono true o false. Quando si specifica true, un'applicazione può gestire più insiemi di risultati attivi (MARS). Quando si specifica false, un'applicazione deve prima elaborare o annullare tutti gli insiemi di risultati da un batch per poter eseguire altri batch in tale connessione. No
multiSubnetFailover I valori consentiti sono true o false. Se l'applicazione si connette a un gruppo di disponibilità (AG) AlwaysOn in subnet diverse, l'impostazione di questa proprietà su true garantisce una maggiore velocità di rilevamento e connessione al server attualmente attivo. No
packetSize Dimensioni in byte dei pacchetti di rete usati per comunicare con un'istanza del server. No
pooling I valori consentiti sono true o false. Quando si specifica true, la connessione sarà in pool. Quando si specifica false, la connessione verrà aperta in modo esplicito ogni volta che è richiesta la connessione. No

Autenticazione SQL

Per usare l’autenticazione SQL, oltre alle proprietà generiche descritte nella sezione precedente, specificare le proprietà seguenti:

Proprietà Descrizione Richiesto
userName Nome utente utilizzato per connettersi al server.
password Password per il nome utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro. In alternativa, fare riferimento a un segreto archiviato in Azure Key Vault.

Esempio: usare l’autenticazione SQL

{
    "name": "AmazonSqlLinkedService",
    "properties": {
        "type": "AmazonRdsForSqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Esempio: usare l'autenticazione di SQL con una password in Azure Key Vault

{
    "name": "AmazonSqlLinkedService",
    "properties": {
        "type": "AmazonRdsForSqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Esempio: usare Always Encrypted

{
    "name": "AmazonSqlLinkedService",
    "properties": {
        "type": "AmazonRdsForSqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "alwaysEncryptedSettings": {
                "alwaysEncryptedAkvAuthType": "ServicePrincipal",
                "servicePrincipalId": "<service principal id>",
                "servicePrincipalKey": {
                    "type": "SecureString",
                    "value": "<service principal key>"
                }
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Autenticazione di Windows

Per usare l’autenticazione di Windows, oltre alle proprietà generiche descritte nella sezione precedente, specificare le proprietà seguenti:

Proprietà Descrizione Richiesto
userName Consente di specificare un nome utente. Esempio: domainname\username.
password Specificare una password per l'account utente specificato per nome utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro. In alternativa, fare riferimento a un segreto archiviato in Azure Key Vault.

Esempio: usare l’autenticazione di Windows

{
    "name": "AmazonSqlLinkedService",
    "properties": {
        "type": "AmazonRdsForSqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "Windows",
            "userName": "<domain\\username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Versione legacy

Queste proprietà generiche sono supportate per un servizio collegato di Amazon RDS per SQL Server quando si applica la versione Legacy:

Proprietà Descrizione Richiesto
type La proprietà del tipo deve essere impostata su AmazonRdsForSqlServer.
alwaysEncryptedSettings Specificare le informazioni alwaysencryptedsettings necessarie per consentire ad Always Encrypted di proteggere i dati sensibili archiviati in Amazon RDS per SQL Server usando un'identità gestita o un'entità servizio. Per altre informazioni, vedere la sezione Uso di Always Encrypted. Se non specificato, l'impostazione predefinita per Always Encrypted è disabilitata. No
connectVia Questo runtime di integrazione viene usato per connettersi all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se non specificato, viene usato il runtime di integrazione di Azure predefinito. No

Il connettore Amazon RDS per SQL Server supporta i tipi di autenticazione seguenti. Per informazioni dettagliate, vedere le sezioni corrispondenti.

Autenticazione di SQL per la versione legacy

Per usare l’autenticazione SQL, oltre alle proprietà generiche descritte nella sezione precedente, specificare le proprietà seguenti:

Proprietà Descrizione Richiesto
connectionString Specificare le informazioni connectionString necessarie per connettersi al database di Amazon RDS per SQL Server. Specificare un ID di accesso come nome utente e accertarsi che sia eseguito il mapping del database a cui collegarsi a questo ID di accesso.
password Per inserire una password in Azure Key Vault, eseguire lo spostamento forzato dei dati della configurazione password all'esterno della stringa di connessione. Per altre informazioni, vedere Memorizzare credenziali in Azure Key Vault. No

Autenticazione di Windows per la versione legacy

Per usare l’autenticazione di Windows, oltre alle proprietà generiche descritte nella sezione precedente, specificare le proprietà seguenti:

Proprietà Descrizione Richiesto
connectionString Specificare le informazioni connectionString necessarie per connettersi al database di Amazon RDS per SQL Server.
userName Consente di specificare un nome utente. Esempio: domainname\username.
password Specificare una password per l'account utente specificato per nome utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro. In alternativa, fare riferimento a un segreto archiviato in Azure Key Vault.

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione di set di dati, vedere l'articolo sui set di dati. Questa sezione fornisce un elenco delle proprietà supportate dal set di dati di Amazon RDS per SQL Server.

Per copiare dati da/in un database di Amazon RDS per SQL Server, sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type del set di dati deve essere impostata su AmazonRdsForSqlServerTable.
schema Nome dello schema. No
table Nome della tabella/vista. No
tableName Nome della tabella/vista con schema. Questa proprietà è supportata per garantire la compatibilità con le versioni precedenti. Per i nuovi carichi di lavoro, usare schema e table. No

Esempio

{
    "name": "AmazonRdsForSQLServerDataset",
    "properties":
    {
        "type": "AmazonRdsForSqlServerTable",
        "linkedServiceName": {
            "referenceName": "<Amazon RDS for SQL Server linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per definire le attività, vedere l'articolo sulle pipeline. Questa sezione fornisce un elenco delle proprietà supportate dall'origine di Amazon RDS per SQL Server.

Amazon RDS per SQL Server come origine

Suggerimento

Per caricare dati da Amazon RDS per SQL Server in modo efficiente usando il partizionamento dei dati, vedere ulteriori dettagli in Copia parallela da un database SQL.

Per copiare dati da Amazon RDS per SQL Server, impostare il tipo di origine nell'attività di copia su AmazonRdsForSqlServerSource. Nella sezione source dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type dell'origine dell'attività di copia deve essere impostata su: AmazonRdsForSqlServerSource.
sqlReaderQuery Usare la query SQL personalizzata per leggere i dati. Un esempio è select * from MyTable. No
sqlReaderStoredProcedureName 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. No
storedProcedureParameters 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.
No
isolationLevel Specifica il comportamento di blocco della transazione per l'origine SQL. Valori consentiti: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable e Snapshot. Se non specificato, viene utilizzato il livello di isolamento predefinito del database. Per altre informazioni dettagliate, vedere questo documento. No
partitionOptions Specifica le opzioni di partizionamento dei dati usate per caricare dati da Amazon RDS per SQL Server.
Valori consentiti: None (predefinito), PhysicalPartitionsOfTable e DynamicRange.
Quando è abilitata un'opzione partizione (diversa da None), il grado di parallelismo per il caricamento simultaneo di dati da Amazon RDS per SQL Server è controllato dall'impostazione parallelCopies nell'attività di copia.
No
partitionSettings Specifica il gruppo di impostazioni per il partizionamento dei dati.
Applicare quando l'opzione di partizione non è None.
No
In partitionSettings:
partitionColumnName Specificare il nome della colonna di origine nel tipo integer o data/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2 o datetimeoffset) che verrà usato 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.
Si applica quando l'opzione di partizione è DynamicRange. 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.
No
partitionUpperBound 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.
Si applica quando l'opzione di partizione è DynamicRange. Per un esempio, vedere la sezione Copia parallela dal database SQL.
No
partitionLowerBound 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.
Si applica quando l'opzione di partizione è DynamicRange. Per un esempio, vedere la sezione Copia parallela dal database SQL.
No

Tenere presente quanto segue:

  • Se è specificato sqlReaderQuery per AmazonRdsForSqlServerSource, l’attività Copy esegue questa query nell’origine di Amazon RDS per SQL Server per ottenere i dati. In alternativa, è possibile specificare una stored procedure indicando i parametri sqlReaderStoredProcedureName e storedProcedureParameters, se la stored procedure 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.

Esempio: usare una query SQL

"activities":[
    {
        "name": "CopyFromAmazonRdsForSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Amazon RDS for SQL Server input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AmazonRdsForSqlServerSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Esempio: usare una stored procedure

"activities":[
    {
        "name": "CopyFromAmazonRdsForSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Amazon RDS for SQL Server input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AmazonRdsForSqlServerSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Definizione della stored procedure

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

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.

Screenshot delle opzioni di partizione

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 dall'impostazione parallelCopies sull'attività di copia. Se, ad esempio, si imposta parallelCopies su quattro, il servizio simultaneamente genera ed esegue quattro query in base all'opzione partizione specificata e alle impostazioni, e ogni query recupera una porzione di dati dal database di 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à di copia 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:
1. Eseguire una query sull'intera tabella:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
2. 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>
3. Query con sottoquery:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. 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:

  1. Scegliere una colonna distintiva come colonna partizione (ad esempio, chiave primaria o chiave univoca) per evitare l'asimmetria dei dati.
  2. Se la tabella include una partizione predefinita, usare l'opzione di partizione "Partizioni fisiche della tabella" per ottenere prestazioni migliori.
  3. Se si usa Azure Integration Runtime per copiare i dati, è possibile impostare "Unità di integrazione dati (DIU)" (>4) perché utilizzi più risorse di calcolo. Controllare gli scenari applicabili.
  4. Grado di parallelismo copia” controlla i numeri partizione; se si imposta per questo numero un valore troppo grande, le prestazioni potrebbero talvolta risentirne. È preferibile impostare questo numero come (DIU o numero di nodi del runtime di integrazione self-hosted) * (2-4).

Esempio: caricamento completo da una tabella di grandi dimensioni con partizioni fisiche

"source": {
    "type": "AmazonRdsForSqlServerSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Esempio: query con partizione a intervalli dinamici

"source": {
    "type": "AmazonRdsForSqlServerSource",
    "query": "SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

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.

Risultato della query SQL

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Proprietà dell'attività GetMetadata

Per altre informazioni sulle proprietà, vedere Attività GetMetadata

Uso di Always Encrypted

Quando si copiano dati da/in Amazon RDS per SQL Server con Always Encrypted, seguire questa procedura:

  1. Archiviare la chiave master della colonna (CMK) in un Azure Key Vault. Altre informazioni su come configurare Always Encrypted usando Azure Key Vault

  2. Accertarsi di concedere l'accesso all'insieme di credenziali delle chiavi in cui è archiviata la chiave master della colonna (CMK). Per le autorizzazioni necessarie, fare riferimento a questo articolo.

  3. Creare un servizio collegato per connettersi al database SQL e abilitare la funzione "Always Encrypted" usando l'identità gestita o l'entità servizio.

Risolvere i problemi di connessione

  1. Configurare l’istanza di Amazon RDS per SQL Server per accettare connessioni remote. Avviare Amazon RDS per SQL Server Management Studio, fare clic con il pulsante destro del mouse su server e selezionare Proprietà. Selezionare Connessioni dall'elenco, quindi selezionare la casella di controllo Consenti connessioni remote a questo server.

    Abilitare connessioni remote

    Per la procedura dettagliata, vedere Configurare l'opzione di configurazione del server di accesso remoto.

  2. Avviare Amazon RDS per Gestione configurazione SQL Server. Espandere Configurazione di rete Amazon RDS per SQL Server per l'istanza prevista e selezionare Protocolli per MSSQLSERVER. I protocolli vengono visualizzati nel riquadro destro. Abilitare TCP/IP facendo clic con il pulsante destro del mouse su TCP/IP e selezionando Abilita.

    Abilitare TCP/IP

    Per informazioni dettagliate e modi alternativi per abilitare il protocollo TCP/IP, vedere Abilitare o disabilitare un protocollo di rete del server.

  3. Nella stessa finestra, fare doppio clic su TCP/IP per aprire la finestra Proprietà TCP/IP.

  4. Passare alla scheda Indirizzi IP . Scorrere in basso per vedere la sezione IPAll. Prendere nota della Porta TCP. Il valore predefinito è 1433.

  5. Creare una regola per Windows Firewall nel computer per consentire il traffico in ingresso attraverso questa porta.

  6. Verifica connessione: per connettersi ad Amazon RDS per SQL Server usando un nome completo, usare Amazon RDS per SQL Server Management Studio da un computer diverso. Un esempio è "<machine>.<domain>.corp.<company>.com,1433".

Aggiornare la versione di Amazon RDS per SQL Server

Per aggiornare la versione di Amazon RDS per SQL Server, nella pagina Modifica servizio collegato, selezionare Consigliato in Versione e configurare il servizio collegato facendo riferimento a Proprietà del servizio collegato per la versione consigliata.

La tabella seguente illustra le differenze tra Amazon RDS per SQL Server usando la versione consigliata e la versione legacy.

Versione consigliata Versione legacy
Supportare TLS 1.3 tramite encrypt come strict. TLS 1.3 non è supportato.

Per un elenco degli archivi dati supportati come origini e sink dall'attività di copia, vedere Archivi dati supportati.