Condividi tramite


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, vedere l'articolo introduttivo per Azure Data Factory o Azure Synapse Analytics.

Funzionalità supportate

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

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

① 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 consentiti nelle regole del firewall, è possibile aggiungere gli IP di Azure Integration Runtime all'elenco elementi 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.

Introduzione

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

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

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

  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.

Note

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

Suggerimento

Se viene restituito un errore con codice "UserErrorFailedToConnectToSqlServer" e un messaggio quale "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 Obbligatoria
type La proprietà type 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 maggiori 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
encrypt 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 Obbligatoria
applicationIntent Il tipo di carico di lavoro dell'applicazione durante la connessione a un server. I valori consentiti sono ReadOnly e ReadWrite. No
connectTimeout Il tempo di attesa (in secondi) di una connessione al server prima che il tentativo sia terminato e venga generato un errore. No
connectRetryCount Numero di riconnessioni tentate dopo aver identificato un errore di connessione inattiva. Il valore dovrebbe essere un numero intero compreso tra 0 e 255. No
connectRetryInterval Il lasso di tempo (in secondi) tra ogni tentativo di riconnessione dopo che è stato identificato un errore di connessione inattiva. Il valore dovrebbe essere un numero intero compreso tra 1 e 60. No
loadBalanceTimeout Il tempo minimo, espresso in secondi, di permanenza della connessione nel pool prima di essere eliminata. No
commandTimeout Il tempo di attesa predefinito (in secondi) prima di terminare un tentativo di eseguire un comando e generare 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 Il nome o l'indirizzo del server partner al quale connettersi se il server primario è spento. 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, l'applicazione può gestire la funzionalità MARS (Multiple Active Result Set). Quando si specifica false, l'applicazione deve elaborare o annullare tutti i set di risultati di un batch prima di poter eseguire qualsiasi altro batch nella connessione. No
multiSubnetFailover I valori consentiti sono true o false. Se l'applicazione si connette a un gruppo di disponibilità 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 Le 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 Obbligatoria
userName Nome utente usato 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 Obbligatoria
userName Consente di specificare un nome utente. Ad esempio domainname\username.
password Specificare una password per l'account utente specificato 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 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 Obbligatoria
type La proprietà type 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 maggiori informazioni, consultare 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 SQL per la versione legacy

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

Proprietà Descrizione Obbligatoria
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 Se si desidera 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 Obbligatoria
connectionString Specificare le informazioni connectionString necessarie per connettersi al database di Amazon RDS per SQL Server.
userName Consente di specificare un nome utente. Ad esempio domainname\username.
password Specificare una password per l'account utente specificato 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.

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 Obbligatoria
type La proprietà tipo del set di dati deve essere impostata su: AmazonRdsForSqlServerTable.
schema Nome dello schema. No
tabella 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 origine dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
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 l'uso di maiuscole e minuscole dei parametri devono corrispondere a quelli 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.
Si applica quando l'opzione di partizione non è None.
No
In partitionSettings:
partitionColumnName Specificare il nome della colonna di origine nel tipo integer o date/datetime type (int, smallint, bigint, date, smalldatetime, datetime, datetime2 o datetimeoffset) che verrà usata nel partizionamento per intervalli per la copia parallela. Se non specificati, l'indice o la chiave primaria della tabella vengono rilevati automaticamente e usati 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à Copy fornisce il partizionamento dei dati predefinito per copiare i dati in parallelo. È possibile trovare le opzioni di partizionamento dei dati nella scheda 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à Copy. 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.

Si consiglia di abilitare la copia parallela con il partizionamento dei dati, specialmente quando si caricano grandi quantità di dati da 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, viene riordinata la scrittura in una cartella come più file con solo il nome della cartella specificato, nel qual caso le prestazioni sono 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 di 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. Ciò non è utile a 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 “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.

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

Mapping dei tipi di dati per Amazon RDS per SQL Server

Quando si copiano dati da Amazon RDS per SQL Server, i mapping seguenti vengono usati da Amazon RDS per i tipi di dati di SQL Server ai tipi di dati provvisori usati dal servizio internamente. Vedere Mapping dello schema e del tipo di dati per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink.

Tipo di dati Amazon RDS per SQL Server Tipo di dati del servizio provvisorio
bigint Int64
binario Byte[]
bit Boolean
Char String, Char[]
date Data e ora
Data e ora Data e ora
datetime2 Data e ora
Datetimeoffset DateTimeOffset
Decimal Decimal
Attributo FILESTREAM (varbinary(max)) Byte[]
Float Double
image Byte[]
int Int32
denaro Decimal
nchar String, Char[]
ntext String, Char[]
NUMERIC Decimal
nvarchar String, Char[]
autentico Single
rowversion Byte[]
smalldatetime Data e ora
SMALLINT Int16
piccola somma di denaro Decimal
sql_variant Oggetto
text String, Char[]
time TimeSpan
timestamp Byte[]
tinyint Int16
uniqueidentifier Guid
varbinary Byte[]
varchar String, Char[]
XML String

Note

Per tipi di dati con mapping al tipo provvisorio Decimal, attualmente l’attività Copy supporta la precisione fino a 28. Se si hanno dati che richiedono una precisione maggiore di 28, è consigliabile convertirli in una stringa in una query SQL.

Quando si copiano dati da Amazon RDS per SQL Server usando Azure Data Factory, il tipo di dati bit viene mappato al tipo di dati intermedio Boolean. Se esistono dati che devono essere mantenuti come tipo di dati bit, usare le query con T-SQL CAST o CONVERT.

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. Maggiori 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 obbligatorie, vedere questa procedura.

  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 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 e selezionare la casella di controllo Consenti connessioni remote al server.

    Abilitare le connessioni remote

    Per maggiori dettagli, vedere la sezione Configurare l'opzione di configurazione del server remote access .

  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 il protocollo TCP/IP facendo clic con il pulsante destro del mouse su TCP/IP e selezionando Abilita.

    Abilitare TCP/IP

    Per maggiori informazioni e modalità alternative di abilitazione del protocollo TCP/IP, vedere la sezione 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 verso il basso per vedere la sezione IPAll. Prendere nota della Porta TCP. L'impostazione predefinita è 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à Copy, consultare la sezione Archivi dati supportati.