Kontakt  Impressum 
 
       Navigationslinks überspringen.   

SSIS - Erstes Beispielpaket



Beispielszenario

Datenflusstask

Datenviewer

Zusammenfassung



Das erste Beispielpaket macht Sie mit der Paketentwicklung in den Integration Services vertraut. Auch wenn das Paket bewusst einfach gehalten ist, werden Sie die wesentlichen Schritte der Paketentwicklung kennen lernen. Insbesondere wird Ihnen die neue, integrierte Entwicklungsumgebung nahe gebracht. Dies ist gerade für Datenbankentwickler wichtig, die bisher noch keine Visual Studio-Erfahrung haben und bislang ausschließlich DTS-Pakete im Microsoft Enterprise-Manager entwickelt haben. Die Vielzahl von Fenstern und die strikte Objektorientierung im Visual Studio ist anfangs ein wenig gewöhnungsbedürftig. Hat man sich jedoch erst einmal mit der neuen Entwicklungsumgebung vertraut gemacht, geht die Paketentwicklung leicht von der Hand. Um Ihnen den Einstieg zu erleichtern, nähern wir uns diesem Thema langsam. Schritt für Schritt werden wir Sie an die neue Entwicklungsumgebung heranführen. In den weiterführenden Beispielen in diesem Buch werden wir aus Gründen der Lesbarkeit und des Platzes nicht en detail auf die einzelnen Arbeitsschritte eingehen. Bei Bedarf sollten Sie die ausführlichen Erläuterungen in diesem Kapitel nochmals wiederholen.

Beispielszenario

Als Beispielszenario wird eine typische Aufgabenstellung für ein ETL-Programm gewählt:
Daten aus einer externen Datenquelle sollen eingelesen und in einer SQL-Datenbank gespeichert werden. Die externe Datenquelle ist ein Flatfile und die SQL-Tabelle bereits in der Datenbank angelegt. Vor dem Insert der Datensätze soll der Inhalt der SQL-Tabelle gelöscht werden. Auch eine Erweiterung des Datenflusses um die Berechnung einer zusätzlichen Spalte, welche in der Datenbank upgedatet werden soll, sind vorgesehen.

Ein neues Integration Services-Projekt erstellen

Ein Integration Services-Projekt ist einer von vielen Visual-Studio-Projekttypen. Angelegt, verwaltet und bearbeitet werden Integration Services-Projekte im Business Intelligence Development Studio. Der Name »Business Intelligence Development Studio« mag irreführend sein, handelt es sich doch lediglich um eine abgespeckte Version des Visual Studios, in dem ausschließlich die Komponenten für die Business Intelligence-Entwicklung installiert sind. Installiert man zusätzlich eine Vollversion des Visual Studios, stehen auch im Business Intelligence Development Studio alle Projekttypen des Visual Studios zur Verfügung.
Im Folgenden wird sowohl von Projekten als auch von Paketen gesprochen. Worin besteht der Unterschied? Ein Projekt ist die Entwicklungsumgebung für ein oder mehrere Pakete. Für jedes Projekt wird ein eigenes Verzeichnis angelegt. Ausgeführt werden im Endeffekt die Pakete, nicht das Projekt. Um ein neues Integration Services-Projekt anzulegen, gehen Sie folgendermaßen vor:
  1. Öffnen Sie das Business Intelligence Development Studio durch einen Klick auf die Desktopverknüpfung oder über den entsprechenden Verweis im Startmenü.
    Die Startseite zeigt Ihnen die zuletzt geöffneten Projekte an und informiert Sie über aktuelle Ereignisse zum SQL-Server. Die Startseite können Sie bei Bedarf einfach schließen.
  2. Mit dem Menübefehl Datei/Neu/Projekt öffnen Sie das Fenster Neues Projekt. Alternativ können Sie dieses Fenster von der Startseite aus mit einem Klick auf Erstellen: P rojekt im linken, oberen Fenster Zuletzt geöffnete Projekte oder mit der Tastenkombination Strg+Umschalt+N aufrufen.


    Abbildung 1: Anlegen eines neuen Integration Services-Projekts

  3. Wählen Sie als Projekttyp Business Intelligence-Projekte aus. Im rechten Fensterbereich werden alle installierten Business Intelligence-Vorlagen angezeigt.
  4. Markieren Sie die Vorlage Integration Services-Projekt. Solange Sie keine manuellen Eingaben vorgenommen haben, wird der Name und der Projektmappenname abhängig vom Vorlagentyp automatisch generiert und angezeigt.
  5. Den Namen und den Speicherort eines neuen Projekts sollten Sie sorgfältig wählen. Denn es ist recht mühsam, die Namen zu einem späteren Zeitpunkt zu ändern. Und ohne sprechende Namen verlieren Sie schnell den Überblick über die gespeicherten Projekte und Pakete. In unserem Beispiel wurde der Name »Erstes_Beispielpaket« gewählt und das Projekt unter V:\BISS\SISS\Projekte gespeichert.
  6. Bestätigen Sie die Eingaben mit einem Klick auf die Schaltfläche OK. Das Visual Studio legt daraufhin ein neues Projekt mit allen erforderlichen Verzeichnissen und Dateien an.

Die Entwicklungsumgebung

Nach dem Anlegen des Projektes empfängt Sie das Visual Studio mit einem leeren Bildschirm. Nur ein Kommentar in der Bildmitte liefert erste Bedienungshinweise.


Abbildung 2: Die Entwicklungsumgebung des Business Intelligence Development Studio

Über die 1.Registerreihe können Sie zwischen dem neuen Paket (Package.dtsx[Entwurf]) und der Startseite wechseln. Haben Sie in einem Projekt mehrere Pakete gespeichert, können diese mit einem Doppelklick auf das gewünschte Paket im Projektmappen-Explorer geöffnet werden. Alle geöffneten Pakete werden im oberen Register angezeigt und können darüber ausgewählt werden. In einem neuen Projekt ist automatisch ein Paket mit dem Namen »Package.dtsx« angelegt. Jedem Paket sollten Sie einen aussagekräftigen Namen geben. Ist im obersten Register ein Paket ausgewählt, erscheint darunter eine 2.Registerreihe. In der 2.Registerreihe sind die Registerkarten Ablaufsteuerung und Datenfluss von zentraler Bedeutung für die Paketentwicklung. Die Ablaufsteuerung ist die Schaltzentrale eines Paketes, im Datenfluss werden Daten von einer Quelle in ein Ziel transferiert. Die Ablaufsteuerung kann einen oder mehrere Datenflüsse enthalten. Bei einem Wechsel auf die Registerkarte Datenfluss wird der in der Ablaufsteuerung markierte Datenflusstask angezeigt. Enthält die Ablaufsteuerung keinen Datenflusstask, wird ein Hinweis zum Anlegen einer solchen gegeben. Im Entwurfsbereich des Datenflusses kann über ein Listenfeld zwischen den Datenflüssen gewechselt werden.
Das Aussehen des Eröffnungsbildschirmes kann variieren. Das Visual Studio merkt sich die letzten Einstellungen der Entwicklungsumgebung und baut beim nächsten Start den Bildschirm genauso wieder auf. Deshalb kann die Darstellung auf Ihrem Bildschirm etwas von dem der Abbildungen abweichen. In den meisten Fällen wird auf der linken Seite das geschlossene Toolbox-Fenster angezeigt. Auf der rechten Seite sollte das geöffnete Fenster des Projektmappen-Explorer zu sehen sein. Ist eines dieser Fenster nicht vorhanden, können Sie es über den Menüpunkt Anzeige aktivieren. Spätestens wenn Sie in dem Menü Anzeige den Menüpunkt weitere Fenster auswählen, werden Sie das sehr umfangreiche Fensterangebot des Visual Studios bemerken. Es ist schlichtweg unmöglich, alle vorhanden Fenster gleichzeitig auf dem Bildschirm darzustellen.
Deshalb ist es empfehlenswert, alle nicht benötigten Fenster zu schließen. Außerdem sollten Sie die praktische Möglichkeit des automatischen Verschiebens in den Hintergrund nutzen. Fenster in denen gerade nicht aktiv gearbeitet wird, werden in den Hintergrund geschoben und im Seitenbereich als geschlossenes Fenster angezeigt. Es reicht aus, die Maus über das geschlossene Fenster zu führen um das Fenster automatisch zu öffnen. Dieses Fensterverhalten können Sie über den Stecker in der Fensterüberschrift steuern:

Das Fenster wird, wenn es gerade nicht verwendet wird automatisch in den Hintergrund verschoben.
Das Fenster ist festgepinnt und bleibt immer im Vordergrund.

Das Fensterverhalten können Sie auch über das Kontextmenü des Fensters festlegen. Fenster müssen die Eigenschaft andockbar haben, damit das Business Intelligence Development Studio sie automatisch in den Hintergrund verschieben kann. Es ist sehr zu empfehlen etwas mit der neuen Fenstertechnik zu spielen, damit Sie ein Gefühl für das Verhalten des Business Intelligence Development Studios bekommen. Haben Sie unbeabsichtigterweise ein Fenster geschlossen, können Sie es jederzeit mit Hilfe des Menüs Anzeige wieder öffnen.
Für die Verbindungs-Manager ist im unteren Fensterteil ein fester Bereich reserviert, der sowohl in der Ablaufsteuerung, als auch im Datenfluss angezeigt wird. Die Größe des Bereiches kann verändert werden, die Anzeige der Verbindungs-Manager gänzlich auszuschalten ist jedoch nicht möglich.

SQL-Task und Verbindungs-Manager

In unserem Beispiel soll der Insert in eine SQL-Tabelle durchgeführt werden. Um keine doppelten Datensätze in der Zieltabelle zu erzeugen, wird der Inhalt der Zieltabelle im 1.Paketschritt gelöscht. Hierzu verwenden wir die Komponente Task 'SQL-ausführen', um einen SQL-Delete-Befehl auszuführen. Ausführbare Objekte, dazu zählen unter Anderem die Tasks der Ablaufsteuerung und Komponenten des Datenflusses, werden aus der Toolbox in den Entwurfsbereich gezogen. In der Toolbox stehen nur die Objekte zur Auswahl, die in dem zurzeit aktiven Entwurfsbereich genutzt werden können. Die Anzeige der Toolboxobjekte der Ablaufsteuerung ist in die beiden Gruppen Ablaufsteuerungselemente und Wartungsplantasks eingeteilt. Innerhalb dieser Gruppen werden die zur Verfügung stehenden Objekte alphabetisch angezeigt. Die Objekte lassen sich per Drag and Drop neu anordnen. Objekte, die Sie nicht verwenden, können Sie aus der Ansicht löschen. Neue Objekte, beziehungsweise aus der Ansicht gelöschte Objekte, können über das Kontextmenü Elemente auswählen in die Ansicht eingefügt werden. Kommen wir nun zu unserem Beispiel zurück und fügen einen SQL-Task in die Ablaufsteuerung ein:
  1. Überprüfen Sie, ob Sie sich in der Registerkarte Ablaufsteuerung befinden.
  2. Bewegen sie den Mauszeiger über das versteckte Toolbox-Fenster am linken Fensterrand und warten Sie, bis es sich öffnet. Sollte kein verstecktes Toolbox-Fenster vorhanden sein, öffnen Sie es mit dem Menübefehl Ansicht/Toolbox und docken Sie das Fenster am linken Rand an. Zum Andocken aktivieren Sie im Kontextmenü die Eigenschaft andockbar und führen einen Doppelklick auf die Fensterüberschrift aus oder benutzen Sie den Stecker in der Fensterüberschrift.
  3. Wählen Sie aus der Objektliste die Komponente Task 'SQL ausführen'. Ziehen Sie den Task in die Ablaufsteuerung oder klicken Sie doppelt auf den ausgewählte Task. In der Ablaufsteuerung wird ein neues Objekt erzeugt, das von der Basisklasse Task 'SQL ausführen' abgeleitet ist und alle Eigenschaften und Methoden dieser Basisklasse erbt.
  4. Geben Sie der Task den sprechenden Namen »SQL_Task Delete Table Import«.
  5. Öffnen Sie mit einem Doppelklick auf das neue Objekt den Editor für den Task 'SQL ausführen'.


    Abbildung 3: Editor für den Task 'SQL ausführen'

Viele Objekt-Editoren im Business Intelligence Development Studio verwenden eine neue Seitensteuerung. Die zur Verfügung stehenden Seiten werden in einem Fensterbereich auf der linken Seite angezeigt. Die Anzeige im rechten Fensterbereich wechselt in Anhängigkeit von der markierten Seite. Die Funktionalität entspricht den bekannten Registern, nur die optische Ausführung ist etwas anders. Damit ein SQL-Task ausgeführt werden kann, werden mindestens eine Datenbankverbindung (Connection) und ein SQL-Statement (SQLStatement) benötigt. Alle anderen Eigenschaften sind optional und werden in diesem Beispiel nicht weiter verändert. Eine Connection ist eine im Verbindungs-Manager angelegte Datenbankverbindung. Eine Datenbankverbindung kann über das Kontextmenü im Fensterbereich der Verbindungs-Manager oder direkt aus dem aufgerufenen Objekt angelegt werden. Beide Anlagevarianten sind absolut gleichwertig, denn es wird letztendliche dasselbe Anlagefenster aufgerufen. Für unser Beispiel legen wir die Datenbankverbindung direkt aus der SQL-Task an.
  1. Markieren Sie die Eigenschaft Connection und öffnen Sie anschließend das Listenfeld.
  2. Da in diesem Paket noch keine Datenbankverbindung angelegt wurde, besteht die Auswahl nur aus der Option Neue Verbindung… Klicken Sie diese Option an.
  3. Es öffnet sich ein neues Fenster, in dem alle Datenbankverbindung des gewählten Verbindungstyps (in unserem Fall OLE DB) angezeigt werden. Es werden nicht nur die Datenbankverbindungen des aktuellen Projektes angezeigt, sondern alle Verbindungen die in dieser Entwicklungsumgebung bereits verwendet wurden. Bei der ersten Verwendung des Business Intelligence Development Studios ist das Fenster noch leer. Legen Sie mit einem Klick auf die Schaltfläche »Neu« eine neue Datenbankverbindung an.
  4. Es wird der Verbindungs-Manager geöffnet. Wählen Sie den Server aus, auf dem Sie unsere Beispieldatenbank installiert haben. Die Authentifizierung beim Server wird nicht verändert, es sei denn, Sie haben sich in Ihrer Datenbankumgebung ganz bewusst gegen die Windows-Authentifizierung entschieden.
  5. Als Datenbankname wählen Sie aus der Liste der zur Verfügung stehenden Datenbanken unsere Beispieldatenbank AW_DW aus.
  6. Testen Sie die Verbindung durch einen Klick auf die entsprechende Schaltfläche.



  7. Abbildung 4: Auswahl der Datenbankverbindung im Verbindungs-Manager

  8. Mit einem Klick auf OK wird die Datenbankverbindung angelegt und der Verbindungs-Manager geschlossen.
  9. Die neue Verbindung erscheint nun in der Auswahlliste Connection. Markieren Sie die neue Verbindung und bestätigen Sie Auswahl mit einem Klick auf die Schaltfläche OK.
  10. Die neue Verbindung erscheint nun als Eintrag in der Eigenschaft Connection, im Fensterbereich der Verbindungs-Manager ist die neue Datenbankverbindung ebenfalls aufgeführt.
Die Anlage und Auswahl der Datenbankverbindung erscheint bei der ersten Ausführung eventuell etwas kompliziert. Dieses Vorgehen ist jedoch typisch für die objektorientierte Paketentwicklung. Zuerst muss ein neues Objekt Datenbankverbindung angelegt werden, bevor es der Eigenschaft Connection zugeordnet werden kann. Ist ein Objekt vom Typ Datenbankverbindung in einem Paket angelegt, kann es von beliebig vielen anderen Objekten verwendet werden.

SQL-Task und SQL-Statement

Die zentrale Aufgabe einer SQL-Task ist die Ausführung eines SQL-Statements. Die Syntax hängt von der verbundenen Datenbank und von dem verwendeten Provider ab. Wird, wie in unserem Beispiel, ein SQL-Server 2005 mit dem OLE DB-Provider verwendet, dürfen, zusätzlich zum Standard-SQL, alle speziellen SQL-Erweiterungen des SQL-Servers und der gesamte Sprachumfang von T-SQL genutzt werden. Viele andere Datenbanken sind nicht in der Lage T-SQL auszuführen.
  1. In unserem Beispiel verwenden wir ausschließlich den SQL-Befehl Delete Import. Mit diesem Befehl wird der Inhalt der bereits vorhandene Tabelle »Import« in unserer Beispieldatenbank AW_DW gelöscht. Das SQL-Statement kann direkt im Editor für den Task 'SQL-ausführen' in der Eigenschaft SQLStatement eingegeben werden. Für umfangreichere Statements steht nach einem Klick auf die Erweiterungsschaltfläche ein mehrzeiliger Eingabebereich zur Verfügung. Um die Tabelle »Import« in einer anderen SQL-Server 2005 Datenbank anzulegen, wird folgendes Statement verwendet:
    if exists(select name from sys.tables where name = 'Import')
    
     drop table Import
    
     
    
    create table Import (
    
     Filiale varchar (10)
    
    ,Datum datetime
    
    ,Artikel varchar (10)
    
    ,Menge decimal (18,2)
    
    ,Preis decimal (18,2)
    
    ,Betrag decimal (18,2))   
    
  2. Schließen Sie den Editor mit OK.
  3. Führen Sie das Paket mit einem Klick auf den grünen Pfeil unterhalb der Menüleiste aus.


  4. Abbildung 5: Das Symbol zum Starten der Paketausführung

  5. Das Paket wird im Debug-Modus ausgeführt. Innerhalb der Integration Services können Pakete ausschließlich im Debug-Modus ausgeführt werden. Zur Ausführung werden zusätzliche Informationsfenster geöffnet und die Anzeige auf dem Bildschirm verändert sich dynamisch. Nachdem die Datenbankverbindung aufgebaut wurde, färben sich die Objekte zuerst gelb und anschließend grün. Auf dem Bildschirm erscheint abschließend folgende Darstellung:


  6. Abbildung 6: Ansicht nach der erfolgreichen Ausführung des Beispielspakets

  7. Um die Paketausführung abzuschließen, müssen Sie die blaue, unterstrichene Informationszeile anklicken. Das Paket wechselt wieder in den Entwurfsmodus.
    Sie haben gerade Ihr erstes Integration Services-Paket erstellt und dabei die wesentlichen Schritte der Paketentwicklung durchgeführt:

    • Ein Objekt aus der Toolbox in den Entwicklungsbereich gezogen.
    • Einen Verbindungs-Manager angelegt.
    • Ein SQL-Statement eingeben.
    • Das Paket erfolgreich ausgeführt.

Datenflusstask

Zum Einlesen der Daten aus dem Flatfile und zum Abspeichern derselben in einer SQL-Tabelle verwenden wir einen Datenflusstask. Mit Hilfe der Datenflusstask werden Daten aus einer Quelle in den Hauptspeicher des ausführenden Computers geladen. Dort werden sie aufbereitet und zum Abschluss in ein vorher definiertes Ziel geschrieben. Der Datenflusstask ist eine Art Verzweigung in ein Unterpaket. Die Ablaufsteuerung ruft das Unterpaket Datenfluss auf und wartet mit der weiteren Ausführung, bis der Datenflusstask beendet ist. Eine Ablaufsteuerung kann mehrere Datenflusstasks enthalten.
  1. Ziehen Sie einen Datenflusstask in den Entwurfsbereich der Ablaufsteuerung.
  2. Markieren Sie den SQL-Task. Ein grüner Workflowpfeil wird sichtbar.
  3. Benennen Sie den Datenflusstask um in »Datenflusstask Import Flatfile«.
  4. Klicken Sie auf den Workflowpfeil und verbinden Sie den Task »SQL_Task Delete Table Input«, welche Sie im obigen Beispiel angelegt haben, mit dem Datenflusstask.


Abbildung 7: Ansicht der Ablaufsteuerung

Mit dem grünen Workflowpfeil wird die Ausführungsreihenfolge der Tasks gesteuert. In diesem Fall wird der Datenflusstask erst ausgeführt, nachdem der SQL Task erfolgreich ausgeführt wurde. Jeder Task kann beliebig viele Workflows auslösen und mit beliebig vielen Workflowpfeilen verbunden werden, so dass der Task auf die Ausführung aller mit ihm verbundenen Tasks wartet, bis sie selbst gestartet wird. Es ist auch möglich, einen Workflow bei einem Fehler während der Ausführung einer Task oder nur unter speziellen Bedingungen auslösen zu lassen. Dieses Verhalten steuern Sie durch das Kontextmenü des Workflowpfeils.

Datenfluss

Anders als bei allen anderen Tasks, gelangen Sie nach einem Doppelklick auf den Datenflusstask nicht in den Task-Editor, sondern wechseln in den Datenfluss. Um die Eigenschaften der Datenflusstask zu ändern, müssen Sie das Eigenschaftsfenster der Datenflusstask mit F4 öffnen.
In einem Datenfluss werden Daten in den Hauptspeicher des ausführenden Computers eingelesen, bearbeitet und abschließend in ein Datenziel geschrieben. Auffallend sind die vielfältigen und flexiblen Bearbeitungsmöglichkeiten des Datenflusses, die die Integration Services zur Verfügung stellen. Sollte eine Anforderung nicht mit den Standardkomponenten des Datenflusses gelöst werden können, besteht die Möglichkeit eine individuelle Skriptkomponente zu programmieren. Bildlich betrachtet, fließen tatsächlich Daten in einem Datenfluss. Die Daten entspringen einer Datenquelle und münden in einem Datenziel. Auf diesem Weg können eine Vielzahl von Transformations-Komponenten eingebaut werden. Sind zu viele Daten in einem Datenfluss, werden sie sukzessive bearbeitet. Die Daten fließen eben.


Jede Komponente ermittelt und merkt sich die Metadaten des ein- und ausgehenden Datenstroms. Dieses vorauseilende Mitdenken führt jedoch oftmals zu völlig unerwarteten Fehlermeldungen. Die Integration Services bieten einen Assistenten zur Behebung derartiger Probleme an. In den meisten Fällen ist aber das Löschen und Neuanlegen einer Komponente der schnellste und effektivste Weg, die Metadaten zu bereinigen.

Flatfilequelle

In unserem Beispiel wird eine Komponente vom Typ Flatfilequelle als Datenquelle für unseren Datenflusstask verwendet. Es wird die Ascii-Datei »Flatfile_Import.txt« aus dem Directory V:\BISS\SSIS\Beispiele\Kap13 eingelesen.
Filiale;Datum;Artikel;Menge;Preis

001;02.01.05;4711;20;2,66

001;03.01.05;10005;4;29,50

001;01.01.06;2500;50;6,90

001;17.01.06;2501;200;12,50      

Das Dateiformat ist Comma Seperated Values (CSV) mit Spaltennamen in der ersten Datenzeile, jede Zeile wird mit einen Carriage Return Line Feed (CR/LF) abgeschlossen, das Datum ist in deutscher Notation angegeben und die Dezimalstellen in der Spalte Preis sind mit einem Komma getrennt.
Diese Angaben zum Datenformat sind wichtig, um die korrekten Einstellungen im Flatfile-Verbindungs-Manager vornehmen zu können.
  1. Sollten Sie sich noch in der Ablaufsteuerung befinden, wechseln Sie mit einem Doppelklick auf den Datenflusstask oder über die 2.Registerreihe in den Entwurfsbereich des Datenflusses.
  2. Ziehen Sie eine Komponente vom Typ Flatfilequelle aus der Toolbox in den Entwurfsbereich des Datenflusses.
  3. Benennen Sie die Flatfilequelle um in »Flatfilequelle Flatfile_Input« und passen Sie anschließend die Größe des Objektes an.
  4. Öffnen Sie mit einem Doppelklick auf die Flatefilequelle den Quellen-Editor für Flatfiles.
  5. Der Quellen-Editor für Flatfiles erwartet als Erstes die Angabe eines gültigen Verbindungs-Managers für Flatfiles. Klicken Sie auf die Schaltfläche »Neu« um einen neuen Flatfile-Verbindungs-Manager anzulegen. Es öffnet sich der Verbindungs-Manager-Editor für Flatfiles.
  6. Nehmen Sie die Einträge laut Abbildung 8 vor. Der vollständige Dateiname lautet V:\BISS\SSIS\Beispiele\Kap13\FlatFile_Import.txt.



  7. Abbildung 8: Verbindungs-Manager-Editor für Flatfiles

  8. Wechseln Sie auf die Seite Erweitert.


    Abbildung 9: Konfiguration der Spalteneigenschaften

    Auf der Seite Erweitert wird der Datentyp der Spalten festgelegt. Der Standard-Datentyp für alle Spalten eines Flatfiles ist String (DT_STR). Es empfiehlt sich, die Datentypen explizit zu definieren, denn dies erleichtert die weitere Verarbeitung erheblich. Die Festlegung des Datentyps sollte möglichst sofort durchgeführt werden, da anhand dieser Information die Metadaten ermittelt und gespeichert werden. Spätere Änderungen sind wesentlich aufwendiger.

  9. Ändern Sie die Werte der Spalten:
  10.             OutputCollumWidth       DataType
                
    Filiale     10                      string[DT_STR]
    Datum       0                       date[DT_DATE]
    Artikel     10                      string[DT_STR]
    Menge       0                       decimal[DT_DECIMAL]
    Preis       0                       decimal[DT_DECIMAL]
    
    Tabelle 1: Spalteneigenschaften in unserem Beispielpaket

  11. Schließen Sie die Anlage des Flatfile-Verbindungs-Managers mit OK ab. Der Flatfile-Verbindungs-Manager erscheint im Fensterbereich der Verbindungs-Manger und wird automatisch in den Quellen-Editor für Flat-Files übernommen.



  12. Abbildung 10: Verbindungs-Manager im Quellen-Editor für Flatfiles

  13. Mit »Vorschau« können Sie das Ergebnis Ihrer Eingaben überprüfen. Auf der Seite Spalten könnten Sie bei Bedarf einzelnen Spalten vom Datenfluss ausschließen.
  14. Schließen Sie die Eingabe über die Schaltfläche OK ab.

Komponente Abgeleitete Spalte

Unsere Zieltabelle »Import« enthält eine Spalte Betrag (vgl. oben Punkt SQL-Task und SQL-Statement) die in unserer Import-Datei nicht vorhanden ist. Die Spalte Betrag werden wir nun dem Datenfluss hinzufügen. Sie errechnet sich aus der Multiplikation von Menge und Preis.
Die Integration Services stellen für solche Anforderungen eine sehr nützliche Komponente zur Verfügung: Abgeleitete Spalte.
  1. Ziehen Sie eine Komponente vom Typ Abgeleitete Spalte aus der Toolbox in den Entwurfsbereich des Datenflusses.
  2. Benennen Sie die Komponente Abgeleitete Spalte um in »Abgeleitete Spalte Betrag«.
  3. Markieren Sie die Flatfilequelle. Ein grüner und eine roter Datenflusspfeil werden sichtbar
  4. Klicken Sie auf den grünen Datenflusspfeil und ziehen Sie mit gedrückter Maustaste den Pfeil auf die Komponente Abgeleitete Spalte. Durch die Zuordnung des Datenflusspfeils wird der Input einer Komponente definiert. Aus dem Input werden die Metadaten ermittelt, welche als nicht sichtbare Eigenschaft in der Komponente gespeichert werden.
  5. Öffnen Sie mit einem Doppelklick auf die Komponente Abgeleitete Spalte den Transformations-Editor für abgeleitete Spalte.



  6. Abbildung 11: Transformations-Editor für abgeleitete Spalte

  7. Erweitern Sie die Anzeige Spalten. Es werden alle verfügbaren Spalten des Datenflusses angezeigt.
  8. Im unteren Fensterbereich werden die neuen, abgeleiteten Spalten definiert. Tragen Sie als Namen der abgeleiteten Spalte Betrag ein.
  9. Als Ausdruck geben Sie Menge * Preis ein. Den Ausdruck können Sie auch per Drag and Drop aus den angezeigten Spalten und Operatoren zusammenstellen.
  10. Mit Verlassen des Feldes wird der Ausdruck automatisch überprüft. Ist der Ausdruck fehlerhaft, wird dies durch eine rote Schrift angezeigt. Anhand der Ausdrucks-Inputdaten wird der bestmögliche Datentyp für die neue Spalte ermittelt und angezeigt. In unserem Beispiel wird als Datentyp numeric [DT_NUMERIC] vorgeschlagen, damit es bei der Multiplikation von zwei Datentypen im Format decimal keinen Datenverlust gibt. Der Datentyp kann bei Bedarf manuell geändert werden.
  11. Schließen Sie den Editor mit einem Klick auf die Schaltfläche OK.

Komponente OLE DB-Ziel

Abschließend soll unser Datenfluss in die SQL-Tabelle »Import« geschrieben werden. Für einen Insert in eine Datenbank wird im Datenfluss die Komponente OLE DB-Ziel verwendet. Andere Provider wie z.B. ADO.NET stehen hierfür derzeit noch nicht zur Verfügung.
  1. Ziehen Sie eine Komponente vom Typ OLE DB-Ziel aus der Toolbox in den Entwurfsbereich des Datenflusses.
  2. Benennen Sie die Komponente OLE DB-Ziel um in »OLE DB-Ziel Table Import« und passen Sie anschließend die Größe des Objektes an.
  3. Markieren Sie die Komponente Abgeleitete Spalte. Ein grüner und eine roter Datenflusspfeil werden sichtbar.
  4. Klicken Sie auf den grünen Datenflusspfeil und ziehen Sie ihn mit gedrückter Maustaste auf die OLE DB-Zielkomponente.
  5. Öffnen Sie mit einem Doppelklick auf die Komponente OLE DB-Ziel den Ziel-Editor für OLE DB.



  6. Abbildung 12: Ziel-Editor für OLE DB

  7. Als erste Eingabe wird ein gültiger OLE DB-Verbindungs-Manager erwartet. Nach dem Öffnen des Listenfelds werden Ihnen alle in diesem Paket angelegten OLE DB Verbindungs-Manager angezeigt. Da wir in unserem Beispiel bislang nur einen Verbindungs-Manager verwendet haben, ist dieser automatisch ausgewählt.



  8. Abbildung 13: Auswahl der Verbindungs-Manager im Pull-Down-Menü

  9. Klicken Sie bei der Eigenschaft Name der Tabelle oder Sicht auf das Listenfeld und wählen Sie aus unserer Beispieldatenbank AW_DW die Tabelle »[dbo].Import« aus. Alle weiteren Einträge auf dieser Seite können für unser Beispiel unverändert bleiben.
  10. Wechseln Sie auf die Seite Zuordnungen. In unserem Beispiel stimmen die Namen des Datenflusses mit dem Namen der Zieltabelle überein. Alle Zuordnungen können erkannt werden und werden automatisch eingetragen. Stimmen die Namen des Datenflusses nicht mit denen der Zieltabelle überein, müssen die Zuordnungen manuell durchgeführt werden. Bestätigen Sie die Zuordnungen mit einem Klick auf die Schaltfläche OK.



  11. Abbildung 14: Spaltenzuordnungen im Ziel-Editor für OLE DB

Datenviewer

Mit Hilfe eines Datenviewers kann der Datenfluss im Detail während der Ausführung betrachtet werden. Diese Funktion ist während der Entwicklungsphase eines Paketes ausgesprochen hilfreich. Um einen Datenviewer anzulegen, gehen Sie folgendermaßen vor.
  1. Markieren Sie den grünen Datenflusspfeil zwischen der Komponente Abgeleitete Spalte und dem OLE DB-Ziel.
  2. Öffnen Sie das Kontextmenü mit der rechten Maustaste und wählen Sie den Menüpunkt Datenviewer aus.
  3. Der Datenflusspfad-Editor wird geöffnet und die Seite Datenviewer angezeigt. Klicken Sie auf die Schaltfläche »Hinzufügen«.
  4. Es öffnet sich das Fenster Datenviewer konfigurieren. Der Typ Raster ist markiert. Mit einem Klick auf die Schaltfläche OK wird ein neuer Datenviewer dieses Typs hinzugefügt.
  5. Schließen Sie den Datenflusspfad-Editor mit OK.



  6. Abbildung 15: Anzeige des gerade hinzugefügten Datenviewers im Datenflusspfad-Editor

    Im Fenster Datenviewer konfigurieren gibt es zahlreiche Konfigurationsmöglichkeiten. Sie können den Datenfluss z.B. als Diagramm oder als Histogramm darstellen. Zusätzlich können Sie die anzuzeigenden Spalten festlegen. Um einen schnellen Überblick über die Daten des Datenflusses zu erhalten, sind die Standardeinstellungen allerdings vollkommen ausreichend. Neben dem grünen Workflowpfeil wird der Datenviewer angezeigt:


    Abbildung 16: Ansicht des Datenflusses

  7. Führen Sie das Paket mit einem Klick auf den grünen Pfeil in der Menüleiste oder mit F5 aus.
  8. Das Paket wird gestartet, die Verbindungen aufgebaut und die Farben der Komponenten wechseln auf gelb. Der Datenviewer wird eingeblendet und die vier Zeilen des Datenflusses werden angezeigt. Die Paketausführung wird zum Betrachten der Daten angehalten.



  9. Abbildung 17: Ausgabe der Daten des Datenviewers

  10. Die Paketausführung wird mit einem Klick auf den grünen Pfeil im Datenviewer fortgesetzt.
  11. Nach Abschluss der Paketausführung erhalten Sie im unteren Fensterbereich eine Abschlussmeldung in blauer, unterstrichener Schrift. Bestätigen Sie diese Meldung mit einem Klick um in den Entwurfmodus des Datenflusses zurückzukehren.
  12. Speichern Sie das Projekt ab und lassen Sie sich die Tabelle im SQL Server Management Studio anzeigen.

Zusammenfassung

Sie haben Ihr erstes Integration Services-Paket erstellt und erfolgreich ausgeführt. Das Beispielpaket enthält viele wichtige Elemente der Paketerstellung:
  • Verbindungs-Manager
  • SQL-Task
  • Datenflusstask
  • Flatfilequelle
  • Transformationskomponente
  • Ausdrucksprogrammierung
  • Datenviewer
  • Update SQL-Tabelle
Darauf aufbauend können Sie sich nach und nach mit den weiterführenden Elementen der Integration Services vertraut machen. Die Erklärungen zum Beispielpaket sind sehr ausführlich. Die gesamte Paketerstellung im Überblick können Sie der nachfolgenden, stichwortartigen Auflistung der Programmierschritte entnehmen:
  1. Neues Projekt anlegen.
  2. SQL-Task in die Ablaufsteuerung ziehen.
  3. OLE DB-Verbindungs-Manager erstellen.
  4. SQL-Statement eingeben.
  5. Datenflusstask in die Ablaufsteuerung ziehen.
  6. Grünen Workflowpfeil der SQL-Task mit der Datenflusstask verbinden.
  7. In den Datenfluss wechseln.
  8. Eine Flatfilequelle in den Datenfluss ziehen.
  9. Einen Flatfile-Verbindungs-Manager erstellen.
  10. Den Datentyp der Spalten definieren.
  11. Eine Komponente Abgeleitete Spalte in den Datenfluss ziehen.
  12. Den grünen Datenflusspfeil der Flatfilequelle mit der Komponente Abgeleitete Spalte verbinden.
  13. Eine neue Spalte Betrag einrichten.
  14. Eine Komponente OLE DB-Ziel in den Datenfluss ziehen.
  15. Den grünen Datenflusspfeil der Komponente Abgeleitete Spalte mit der Komponente OLE DB-Ziel verbinden.
  16. Den vorhandenen OLE DB-Verbindungs-Manager und die Tabelle Import zuordnen.
  17. Automatische Spaltenzuordnung.
  18. Paket ausführen.
  19. Projekt speichern.