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:
- Strumento Copia dati
- Il portale di Azure
- .NET SDK
- SDK di Python
- Azure PowerShell
- API REST
- Modello di Azure Resource Manager
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.
Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:
Cercare DB2 e selezionarne il connettore.
Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.
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 | Sì |
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. |
Sì |
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. |
Sì |
database | Nome del database DB2. | Sì |
authenticationType | Tipo di autenticazione usato per connettersi al database DB2. Il valore consentito è: Di base. |
Sì |
username | Specificare il nome utente per la connessione al database DB2. | Sì |
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. | Sì |
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 | Sì |
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. | Sì |
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.
Contenuto correlato
Per un elenco degli archivi dati supportati come origini e sink dall'attività Copy, vedere Archivi dati supportati.