Die SQL Server Integration Services können neben vielen anderen Quellen auch XML-Dateien als Quelleingabe verarbeiten. Alles schön und gut, wäre da nicht wieder ein kleiner Haken: Es ist leider standardmäßig nicht möglich, eine XML-Datei mit mehreren Namespaces zu verarbeiten. Versucht man im Datenfluss-Task, eine XML-Quelle mit einer XML-Datei einzurichten, die mehrere Namespaces hat, stößt man im Verlauf auf folgende Fehlermeldung:
Der XSD-Code kann nicht aus der XML-Datei abgeleitet werden. Der XML-Code enthält mehrere Namespaces.
Was kann man nun tun? Zwei Optionen: Es gibt zum einen Drittanbietertools, die das Problem lösen. Zum anderen kann man die Namespaces automatisiert vor dem Laden der Datei entfernen.
Und mit genau dieser zweiten Lösung werden wir uns nun auseinandersetzen. Dazu werden wir die XML-Datei mit einer XSLT-Transformation in eine „SSIS kompatible“ XML-Datei konvertieren. Zunächst wechseln wir also die Ablaufsteuerung im Paket und ziehen und den XML-Task aus der SSIS-Toolbox in das Paket rein.
Danach erstellen wir eine leere XSLT-Datei im Filesystem und fügen folgenden Code ein:
Diese XSLT-Transformationsdatei bzw. der entsprechende Code wird auf die XML-Datei angewendet und entfernt über den XML-Task die „überflüssigen“ Namespaces.
Als nächstes editieren wir die Eigenschaften des XML-Tasks:
Nachdem der XML-Task bearbeitet wurde, können Sie das ganze speichern und testen.
Viel Spaß und Erfolg mit Ihrem XML-ETL Prozess! :-)
Geschrieben von: Arthur Leinweber