|
|
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:
- OnPreExecute
- OnPreValidate
- OnPostValidate
- für jede Zeile ProcessInputRow
- 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
|