Mark Aslan Kuschels Blog

SQL Server, Azure, Business Intelligence, Smart Home

Bereitstellen von IBM DB2 Treiber in der Azure Data Factory SSIS Integration Runtime

In Microsofts Azure Cloud ist die Azure Data Factory (ADF) das mittel der Wahl um größere Datenmengen zwischen Datenbanksystemen zu transferieren. Um eine Kompatibilität mit klassischen ETL-Prozessen zu sichern, gibt es die Azure Data Factory SSIS-Integration Runtime (ADF SSIS-IR).

 

Die SSIS-IR besteht aber aus einer oder mehreren virtuellen Maschinen, je nach Tarif, auf denen eine Variante von SQL Server Integration Services ausgeführt wird. Wie bei allen anderen PaaS Diensten muss man sich nicht um die Verwaltung oder das Patchen kümmern, hat damit einhergehend jedoch auch keinen Zugriff auf das Betriebssystem.

Dies kann bei der Installation von Treibern durchaus unangenehm werden.
 

Das einzig mögliche Verfahren ist das Hochladen eines Installationsskriptes sowie der Installationsdateien auf ein BlobStorage-Konto. Für eine Reihe von Treibern gibt es Beispiele auf GitHub, das vorgehen ist in Microsoft Docs gut beschrieben.

Jedoch gibt es kein Beispiel für die Installation von IBM DB2 Treibern.

 

Um diesen Treiber erfolgreich installieren zu können, werden die folgenden Komponenten ermöglicht:

  • Zugriff auf IBM DB2 Installationsmedien
  • Zugriff auf ein System mit Administrationsrechten

 

Zuerst muss der IBM DB2 Treiber lokal oder auf einer VM installiert werden, um die Konfiguration für eine unbeaufsichtigte Installation zu erzeugen.

Die folgenden Screenshots zeigen mehrere Schritte der Installation:

 

 

 

 

 

Am Ende wird eine Datei PROD_CLIENT.RSP erzeugt, diese wird auch für die SSIS-IR Installation benötigt.
Ich verwende folgenden Inhalt:

PROD=CLIENT
LIC_AGREEMENT=ACCEPT
FILE=C:\Program Files\IBM\SQLLIB\
INSTALL_TYPE=CUSTOM
 
COMP=BASE_CLIENT
COMP=DOTNET_DATA_PROVIDER
COMP=SPATIAL_EXTENDER_CLIENT_SUPPORT
COMP=JDBC_SUPPORT
COMP=JDK
COMP=LDAP_EXPLOITATION
COMP=ODBC_SUPPORT
COMP=OLE_DB_SUPPORT
COMP=REPL_CLIENT
COMP=SQLJ_SUPPORT
 
 
LANG=EN
LANG=DE
 
 
INSTANCE=DB2
DB2.NAME=DB2
DEFAULT_INSTANCE=DB2
DB2.TYPE=CLIENT
DB2_EXTSECURITY=NO
DB2_USERSGROUP_NAME=DB2USERS
DB2_ADMINGROUP_NAME=DB2ADMNS
DB2_COMMON_APP_DATA_TOP_PATH=C:\ProgramData
DB2_COPY_NAME=DB2COPY1
DEFAULT_COPY=YES
DEFAULT_CLIENT_INTERFACE_COPY=YES

Die PROD_CLIENT.RSP muss zusammen mit der main.cmd hochgeladen, welche bei mir folgenden Inhalt hat:

Das DB2-Installationspaket liegt dabei im Unterordner DB2.

 

Code der main.cmd

 

@echo off

echo "start main.cmd"
time /T
echo "Installation DB2 64 Bit Treiber"

%cd%\DB2\setup.exe /u %cd%\PROD_CLIENT.rsp /l .\output.log

echo "Setup Completed"

net stop DB2MGMTSVC_DB2COPY1
md %SystemDrive%\ProgramData\IBM\DB2\DB2COPY1\DB2\SQLDBDIR
md %SystemDrive%\ProgramData\IBM\DB2\DB2COPY1\DB2\SQLNODIR
copy %cd%\DB2\SQLDBDIR\*.* %SystemDrive%\ProgramData\IBM\DB2\DB2COPY1\DB2\SQLDBDIR\
copy %cd%\DB2\SQLNODIR\*.* %SystemDrive%\ProgramData\IBM\DB2\DB2COPY1\DB2\SQLNODIR\
net start DB2MGMTSVC_DB2COPY1

echo "Configuration Completed"

Der zweite Teil des Skriptes Dienst des Imports der Server-Konfiguration - diese muss jedoch erst erzeugt werden.
Das Aufrufen der db2cmd.exe aus dem Skript heraus ist jedoch nicht möglich, da ein ein zweites Interaktives Fenster geöffnet wird.
Die Lösung hierfür ist dennoch denkbar einfach. Es müssten einfach alle Knoten und Kataloge lokal registriert werden. Nach dem Ausführen aller db2 catalog und db2cmd Befehle wird die Konfiguration in den Ordnern SQLDBDIR und SQLNODIR abgelegt.

 

 

Diese können in den DB2 Unterordner abgelegt werden und per Copy-Befehl in der SSIS-IR abgelegt werden, zuvor muss jedoch der DB2 Management Dienst gestoppt werden.
Nach einem Start des Dienstes ist nun das Verbinden von SSIS-Paketen beim Ausführen innerhalb der SSIS-IR möglich
😊

Kommentar schreiben

Loading