Condividi tramite


Copiare i dati da DB2 usando Azure Data Factory o Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

Questo articolo illustra come usare l'attività Copy nelle pipeline di Azure Data Factory e Synapse Analytics per copiare i dati da un database DB2. Si basa sull'articolo di panoramica dell'attività di copia che presenta una panoramica generale sull'attività di copia.

Funzionalità supportate

Questo connettore di DB2 è supportato per le funzionalità seguenti:

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

① 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 DB2 supporta le piattaforme e le versioni di IBM DB2 seguenti con DRDA (Distributed Relational Database Architecture) SQLAM (SQL Access Manager) versione 9, 10 e 11. Usa il protocollo DDM/DRDA.

  • IBM DB2 per z/OS 12.1
  • IBM DB2 per z/OS 11.1
  • IBM DB2 per i 7.3
  • IBM DB2 per i 7.2
  • IBM DB2 per i 7.1
  • IBM DB2 per LUW 11
  • IBM DB2 per LUW 10.5
  • IBM DB2 per LUW 10.1

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.

Il runtime di integrazione offre un driver per DB2 integrato e non è quindi necessario installare manualmente alcun driver quando si copiano dati da/in DB2.

Introduzione

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

Creare un servizio collegato a DB2 usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato a DB2 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 DB2 e selezionarne il connettore.

    Screenshot del connettore di DB2.

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

    Screenshot della configurazione del servizio collegato per DB2.

Dettagli di configurazione del connettore

Le sezioni seguenti riportano informazioni dettagliate sulle proprietà che vengono usate per definire entità di Data Factory specifiche per il connettore DB2.

Proprietà del servizio collegato

Per il servizio collegato di DB2 sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type deve essere impostata su: Db2
connectionString Specificare le informazioni necessarie per la connessione all'istanza di DB2.
È anche possibile inserire la password in Azure Key Vault ed eseguire lo spostamento forzato dei dati della configurazione password all'esterno della stringa di connessione. Vedere gli esempi seguenti e l'articolo Archiviare le credenziali in Azure Key Vault per altri dettagli.
connectVia Il runtime di integrazione da usare per la connessione all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se non specificato, viene usato il runtime di integrazione di Azure predefinito. No

Proprietà tipiche all'interno della stringa di connessione:

Proprietà Descrizione Richiesto
server Nome del server DB2. È possibile specificare il numero di porta dopo il nome del server delimitato da due punti, ad esempio server:port.
Il connettore DB2 usa il protocollo DDM/DRDA e, per impostazione predefinita, usa la porta 50000, se non diversamente specificato. La porta usata dal database DB2 specifico potrebbe essere diversa in base alla versione e alle impostazioni, ad esempio per DB2 LUW la porta predefinita è 50000, per AS400 la porta predefinita è 446 o 448 con TLS abilitato. Fare riferimento ai documenti DB2 seguenti sul modo in cui è configurata la porta in genere: DB2 z/OS, DB2 iSeriese DB2 LUW.
database Nome del database DB2.
authenticationType Tipo di autenticazione usato per connettersi al database DB2.
Il valore consentito è: Di base.
username Specificare il nome utente per la connessione al database DB2.
password Specificare la password per l'account utente specificato per il nome utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro oppure fare riferimento a un segreto archiviato in Azure Key Vault.
packageCollection Specificare la posizione in cui i pacchetti necessari vengono creati automaticamente dal servizio durante l'esecuzione di query sul database. Se questo parametro non è impostato, il servizio usa {username} come valore predefinito. No
certificateCommonName Quando si usa la crittografia SSL (Secure Sockets Layer) o TLS (Transport Layer Security), è necessario immettere un valore per il nome comune del certificato. No

Suggerimento

Se viene visualizzato un messaggio di errore che indica The package corresponding to an SQL statement execution request was not found. SQLSTATE=51002 SQLCODE=-805, il motivo è che non è stato creato un pacchetto necessario per l'utente. Per impostazione predefinita, il servizio tenterà di creare un pacchetto nella raccolta denominata come l'utente usato per la connessione a DB2. Specificare la proprietà della raccolta pacchetti per indicare dove si desidera che il servizio crei i pacchetti necessari durante l'esecuzione di query sul database. Se non è possibile determinare il nome della raccolta di pacchetti, provare a impostare packageCollection=NULLID.

Esempio:

{
    "name": "Db2LinkedService",
    "properties": {
        "type": "Db2",
        "typeProperties": {
            "connectionString": "server=<server:port>;database=<database>;authenticationType=Basic;username=<username>;password=<password>;packageCollection=<packagecollection>;certificateCommonName=<certname>;"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Esempio: archiviare la password in Azure Key Vault

{
    "name": "Db2LinkedService",
    "properties": {
        "type": "Db2",
        "typeProperties": {
            "connectionString": "server=<server:port>;database=<database>;authenticationType=Basic;username=<username>;packageCollection=<packagecollection>;certificateCommonName=<certname>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Il servizio collegato DB2 con il payload seguente è ancora supportato senza modifiche, ma è consigliato l'uso del nuovo per il futuro.

Payload precedente:

{
    "name": "Db2LinkedService",
    "properties": {
        "type": "Db2",
        "typeProperties": {
            "server": "<servername:port>",
            "database": "<dbname>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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 presenta un elenco delle proprietà supportate dal set di dati DB2.

Per copiare dati da DB2, sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type del set di dati deve essere impostata su: Db2Table
schema Nome dello schema. No (se nell'origine dell'attività è specificato "query")
table Nome della tabella. No (se nell'origine dell'attività è specificato "query")
tableName Nome della tabella con schema. Questa proprietà è supportata per garantire la compatibilità con le versioni precedenti. Per i nuovi carichi di lavoro, usare schema e table. No (se nell'origine dell'attività è specificato "query")

Esempio

{
    "name": "DB2Dataset",
    "properties":
    {
        "type": "Db2Table",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<DB2 linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Il set di dati tipizzato RelationalTable è ancora supportato senza modifiche, ma è consigliato l'uso del nuovo per il futuro.

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione presenta un elenco delle proprietà supportate dall'origine DB2.

DB2 come origine

Per copiare i dati da DB2, nella sezione origine 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 Db2Source.
query Usare la query SQL personalizzata per leggere i dati. Ad esempio: "query": "SELECT * FROM \"DB2ADMIN\".\"Customers\"". No (se nel set di dati è specificato "tableName")

Esempio:

"activities":[
    {
        "name": "CopyFromDB2",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<DB2 input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "Db2Source",
                "query": "SELECT * FROM \"DB2ADMIN\".\"Customers\""
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

L'origine tipizzata RelationalSource è ancora supportata senza modifiche, ma è consigliato l'uso della nuova per il futuro.

Mapping dei tipi di dati per DB2

Quando si copiano dati da DB2, vengono usati i mapping seguenti tra i tipi di dati di DB2 e i tipi di dati provvisori usati internamente al servizio. 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 database DB2 Tipo di dati del servizio provvisorio
BigInt Int64
Binario Byte[]
BLOB Byte[]
Char String
Clob String
Data Datetime
DB2DynArray String
DbClob String
Decimale Decimale
DecimalFloat Decimale
Double Double
Float Double
Graphic String
Intero Int32
LongVarBinary Byte[]
LongVarChar String
LongVarGraphic String
Numerico Decimale
Reale Singola
SmallInt Int16
Time TimeSpan
Timestamp: Data/Ora
VarBinary Byte[]
VarChar String
VarGraphic String
XML Byte[]

Proprietà dell'attività Lookup

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

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