Home
Datenquellen
Controllflow
DataFlow
SSIS
ToC
Impressum
Rahmen für eine Script Komponente als Datenziel (Destination)

Mit Hilfe der Script Komponente ist es möglich eigene Datenziele (Destination) zu erstellen. Dazu kann dieser Rahmen verwendet werden.

Folgende Punkte sollten beachtet werden:

  • Initialisierungen können nur in der Eventprozedur PreExecute durchgeführt werden. Diese Eventprozedur wird genau einmal vor der eigentlichen Verarbeitung der Daten durch diese Transformation aufgerufen.
     
  • Für jede Zeile, die an diese Transformation gesendet wird, wird die Funktion xxxx_ProcessInputRow aufgerufen. xxxx steht für den Namen des Eingabestroms, standardmäßig ist dies Input0. Dieser Wert kann über die grafische Oberfläche geändert werden.
     
  • Wenn alle Zeilen in der Prozedur xxxx_ProcessInputRow verarbeit wurden, wird genau einmal die Eventprozedur PostExecute aufgerufen. Hier können Aufräumarbeiten durchgeführt werden.
     
  • Variablen, die innerhalb der Klasse über alle Aufrufe ihre Werte behalten müssen, müssen innerhalb der Klasse aber vor den Funktionen deklariert werden. Innerhalb der Klasse können diese Variablen in allen Funktionen angesprochen werden.
     
  • Falls Dateien oder sonstige Referenzen verwendet werden, sollten diese, wenn möglich,  über Connection Manager extern definiert werden. Der Zugriff auf die Dateinamen erfolgt durch Me.Connections.xxxx.ConnectionString.
    xxxx steht für den Namen des Connection Managers.

Die Reihenfolge der Events ist bei der Script Komponente folgende:

  1. OnPreExecute
  2. OnPreValidate
  3. OnPostValidate
  4. für jede Zeile ProcessInputRow
  5. OnPostExecute

Für jede dieser Events kann eine eigene Prozedur geschrieben werden.

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

Public Class ScriptMain
    Inherits UserComponent
      '---------------------------------------------------------
      ' Hier können Variablen definiert werden, die Ihren Wert über
      ' jeden Aufruf Input0_ProcessInputRow behalten müssen
      '
      ' Variablen, die hier definiert werden, sind für alle Sub
      ' oder Funktionen innerhalb dieser Klasse sichtbar
      '---------------------------------------------------------

    Public Overrides Sub PreExecute()
      '---------------------------------------------------------
      ' Wird einmal vor der eigentlichen Verarbeitung aufgerufen.
      ' Der ideale Platz für Initialisierungen
      '---------------------------------------------------------
    End Sub

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
      '---------------------------------------------------------
      ' Wird einmal für jede Zeile in der Pipline aufgerufen
      '---------------------------------------------------------
    End Sub

    Public Overrides Sub PostExecute()
      '---------------------------------------------------------
      ' Wird einmal aufgerufen, wenn alle Datensätze aus der Pipline
      ' abgearbeit wurden - der idealer Platz zum Aufräumen
      '---------------------------------------------------------
    End Sub
End
Class