Home
Datenquellen
Controllflow
DataFlow
SSIS
ToC
Impressum
 
Für die besonderen Fälle: ODBC lebt
 
Für einige weniger verbreiteten Datenbanken stehen entweder gar keine oder nicht immer funktionsfähige OLE-DB Treiber zur Verfügung.
 
Häufig ist aber noch nichts verloren: Die gute alte ODBC Schnittstelle ist in diesen Fällen oft der Ausweg.
Integration Services unterstützen auch ODBC Datenquellen. Wenn die Daten über die ODBC Schnittstelle geschrieben werden sollen, dann unterstützt Sie Microsoft nicht. Deshalb ist Handarbeit in Form eines Scriptdatenziels notwendig.
 
Damit SSIS die ODBC Verbindung nutzen kann muss der entsprechende ODBC Treiber auf jeder Maschine installiert sein, auf der das Paket ausgeführt wird.
 
Bitte denken Sie nicht nur an die Entwicklungsumgebung sondern auch an die Maschinen, auf denen das Paket produktiv ausgeführt werden soll.
 
In SSIS ist es ohne weiteres möglich, auf Datenquellen mit Hilfe von ODBC zuzugreifen. Allerdings ist diese Möglichkeit nicht ganz einfach zu finden. Es gibt zwei Wege um einen ODBC Verbindungs-Manager zu erstellen.
Entweder wird ein Verbindungs-Manager vom Type ODBC oder ADO.NET  ausgewählt. Im Ergebnis sind beide Wege gleichwertig.
 
So gehen Sie Schritt für Schritt vor:
 
Im Fenster Verbindungs-Manager über die rechte Maustaste Neue Verbindung auswählen. Den Punkt ADO.NET-Verbindung finden Sie als dritten Eintrag von oben. Über die Auswahl Neue Verbindung erreichen Sie eine weitere Auswahlmöglichkeit, die auch ODBC anbietet.




Wurde der ADO.NET Verbindungs-Manager ausgewählt, muss beim Anbieter die Standardeinstellung SqlClient Data Provider gegen Obdc Data Provider ausgetauscht werden.

 

 

In der Regel ist es sinnvoll, nicht auf eine gespeicherte Datenquellenspezifikation zu zugreifen. Erstellen Sie am besten eine ODBC Verbindung in Form einer neuen Datei (dsn).  Die Daten werden in das Paket komplett übernommen. Die DSN-Datei ist danach nicht mehr notwendig und kann gelöscht werden. Auf dem System, auf dem das Paket ausgeführt wird, muss nur der entsprechende ODBC Treiber als Infrastruktur vorhanden sein.

Die nächsten Schritte sollten keine Probleme bereiten. Allerdings müssen Sie wissen, wie der jeweilige ODBC Treiber konfiguriert wird. Diese Informationen sind individuell für jeden ODBC Treiber.

Für das Beispiel greife ich über ODBC auf den SQL Server 2005 zu. Das sollten Sie in der Praxis nicht machen, da die wesentlich leistungsfähige Verbindung über OLE-DB zur Verfügung steht.

Soll die ODBC Datenquelle im Datenfluss verwendet werden, so kann nur die DataReader-Quelle verwendet werden. Beim Verbindungs-Manager wird der ADO-Verbindungs-Manager bzw. der ODBC Verbindungs-Manager auf dem Reiter Verbindungs-Manager ausgewählt. Eventuell vorhandene OLE-DB- Verbindungs-Manager werden in der Auswahlbox gar nicht angezeigt.


Bei den Komponenteneigenschaften kann ein ein SQL Befehl eingegeben werden. Dieser SQL Befehl wird mit der Syntax eingegeben, die die Datenquelle erwartet. Leider haben Sie hier nur eine einfache Textbox in die der SQL Befehl eingeben wird.



Sind diese Einstellungen durchgeführt, so können die Daten der ODBC-Datenquelle genauso verwendet werden, wie alle anderen Daten, die mit SSIS im Datenfluss verarbeitet werden.

In dem Beispiel werden die Daten im Datenfluss nicht weiter bearbeitet sondern sofort wieder über den ODBC-Verbindungs-Manager in die Datenbank geschrieben.

Bei SSIS ist zur Zeit kein Datenziel für ODBC-Verbindungen vorhanden. Deshalb muss eine Scriptkomponente als Datenziel erstellt werden.

Wird die Scriptkomponente in den Datenfluss gezogen, erscheint eine Auswahlmöglichkeit, was mit dieser Scriptkomponente gemacht werden soll. Bitte wählen Sie Ziel aus.
Als nächstes sollte die Komponente mit den Daten, in der Regel der grüne Pfeil, verbunden werden. Bei den Eingabespalten werden alle Spalten ausgewählt, die in das Datenziel geschrieben werden. Beim Verwendungstyp kann die Einstellung ReadOnly beibehalten werden.
Der Punkt Eingaben und Ausgaben kann übersprungen werden. Die erforderlichen Einträge sind bereits automatisch übernommen.
Bevor Sie den eigentlichen Scriptkode schreiben, muss unter der Auswahl Verbindungs-Manager der ODBC Verbindungs-Manager hinzugefügt werden.

Beim Script gibt es mehrere Punkte die wichtig sind:

Bitte kodieren Sie keine Verbindungsinformation direkt in den Kode. Genau für Verbindungsinformation gibt es Verbindungs-Manager die auch leicht von außen konfiguriert werden können.

Damit der Kode funktionieren kann ist es wichtig, dass wir wissen, wann welcher Event bzw. Kode ausgeführt wird. Die Reihenfolge ist

  1. AcquireConnections
  2. PreExecute
  3. Eingabe0_ProcessInputRow
  4. PostExecute
  5. ReleaseConnections

In jedem dieser Events wird Kode hinterlegt damit jeder einzelne Datensatz in die Datenbank geschrieben werden kann. Den Kode finden Sie hier.

Bei den Demodaten kommen in den Spalten auch NULL-Werte vor;  diese werden besonders behandelt.

Das Demopaket finden Sie hier.
Im Demopaket wird davon ausgegangen, dass Sie auf der lokalen Maschine den SQL Server 2005 und die AdventureWorks Datenbank installiert haben. Falls dies nicht der Fall ist, passen Sie bitte den Verbindungs-Manager entsprechend an.

 

Komponentenindex:

  • ODBC-Verbindungsmanger
  • ADO.Net Verbindungsmanger
  • DataReader-Quelle
  • Datenflusstask
  • OLE DB-Quelle
  • Script Transformation

erstellt 28.5.2006