Konfigurieren der Skriptkomponente im Skriptkomponenten-Editor
Bevor Sie benutzerdefinierten Code in der Skriptkomponente schreiben, müssen Sie sich für eine Datenflusskomponente entscheiden – Quelle, Transformation oder Ziel – und anschließend die Metadaten und Eigenschaften der Komponente im Transformations-Editor für Skripterstellung konfigurieren.
Auswählen der zu erstellenden Komponentenart
Wenn Sie zum Bereich Datenfluss des SSIS-Designers eine Skriptkomponente hinzufügen, wird das Dialogfeld Skriptkomponententyp auswählen geöffnet. Sie konfigurieren die Komponente vorab als Quelle, Transformation oder Ziel. Nachdem Sie diese erste Auswahl getroffen haben, können Sie die Komponente im Transformations-Editor für Skripterstellung weiter konfigurieren.
Um die Standardskriptsprache für die Skriptkomponente festzulegen, verwenden Sie im Dialogfeld Optionen auf der Seite Allgemein die Option Skriptsprache. Weitere Informationen finden Sie unter Seite Allgemein.
Grundlegendes zu den beiden Entwurfszeitmodi
Im SSIS-Designer weist die Skriptkomponente zwei Modi auf: Metadatenentwurfsmodus und Codeentwurfsmodus.
Wenn Sie den Transformations-Editor für Skripterstellung öffnen, befindet sich die Komponente im Metadatenentwurfsmodus. In diesem Modus können Sie Eingabespalten auswählen und Ausgaben sowie Ausgabespalten hinzufügen oder konfigurieren, aber Sie können keinen Code erstellen. Nachdem Sie die Metadaten der Komponente konfiguriert haben, können Sie zum Codeentwurfsmodus wechseln, um das Skript zu erstellen.
Wenn Sie durch Klicken auf Skript bearbeiten in den Codeentwurfsmodus wechseln, sperrt die Skriptkomponente die Metadaten, um weitere Änderungen zu verhindern, und erstellt anschließend aus den Metadaten der Ein- und Ausgaben automatisch Basiscode. Nachdem der automatisch generierte Code vollständig ist, sind Sie in der Lage, den benutzerdefinierten Code einzugeben. Dieser verwendet die automatisch generierten Basisklassen, um Eingabezeilen zu verarbeiten, auf Puffer und Spalten in den Puffern zuzugreifen sowie Verbindungs-Manager und Variablen aus dem Paket abzurufen. Hierbei handelt es sich ausschließlich um stark typisierte Objekte.
Sie können zum Metadatenentwurfsmodus zurückwechseln, nachdem Sie den benutzerdefinierten Code im Codeentwurfsmodus eingegeben haben. Dadurch wird der von Ihnen geschriebene Code nicht gelöscht. Nachfolgende Änderungen an den Metadaten sorgen jedoch dafür, dass die Basisklasse neu generiert wird. Danach kann die Validierung der Komponente fehlschlagen, da Objekte, auf die der benutzerdefinierte Code verweist, möglicherweise nicht mehr existieren oder geändert wurden. In diesem Fall müssen Sie den Code manuell korrigieren, damit er anhand der neu generierten Basisklasse erfolgreich kompiliert werden kann.
Konfigurieren der Komponente im Metadatenentwurfsmodus
Im Metadatenentwurfsmodus können Sie Eingabespalten auswählen und Ausgaben sowie Ausgabespalten hinzufügen und konfigurieren, aber Sie können keinen Code erstellen. Wechseln Sie, nachdem Sie die Metadaten der Komponente konfiguriert haben, in den Codeentwurfsmodus, um das Skript zu erstellen.
Welche Eigenschaften Sie im benutzerdefinierten Editor konfigurieren müssen, hängt von der Nutzung der Skriptkomponente ab. Die Skriptkomponente kann als Quelle, Transformation oder Ziel konfiguriert werden. Abhängig von der Verwendungsweise der Komponente unterstützt sie entweder eine Eingabe und/oder Ausgaben. Der von Ihnen erstellte benutzerdefinierte Code verarbeitet die Eingabe- und Ausgabezeilen und -spalten.
Seite 'Eingabespalten' des Transformations-Editors für Skripterstellung
Die Seite Eingabespalten des Transformations-Editors für Skripterstellung wird für Transformationen und Ziele, nicht jedoch für Quellen angezeigt. Auf dieser Seite wählen Sie die Eingabespalten aus, die Sie für das benutzerdefinierte Skript verfügbar machen möchten, und legen Lese- oder Lese-/Schreibzugriff darauf fest.
Im Codeprojekt, das basierend auf diesen Metadaten erstellt wird, enthält das Projektelement BufferWrapper für jede Eingabe eine Klasse, die wiederum typisierte Accessoreigenschaften für jede ausgewählte Eingabespalte beinhaltet. Wenn Sie beispielsweise eine ganzzahligeCustomerID-Spalte und eine CustomerName-Zeichenfolgenspalte aus einer Eingabe namens CustomerInput auswählen, enthält das Projektelement BufferWrapper eine CustomerInput-Klasse, die von ScriptBuffer abgeleitet ist. Die CustomerInput-Klasse macht eine ganze Zahl namens CustomerID und eine Zeichenfolge namens CustomerName verfügbar. Diese Konvention macht es möglich, Code mit einer Typprüfung wie im folgenden Beispiel zu schreiben:
Dim currentCustomerID as Integer = CustomerInput.CustomerID
Dim currentCustomerName as String = CustomerInput.CustomerName
Weitere Informationen zum Konfigurieren von Eingabespalten für einen bestimmten Datenflusskomponententyp finden Sie im entsprechenden Beispiel unter Entwickeln bestimmter Arten von Skriptkomponenten.
Seite 'Eingaben und Ausgaben' des Transformations-Editors für Skripterstellung
Die Seite Eingaben und Ausgaben des Transformations-Editors für Skripterstellung wird für Quellen, Transformationen und Ziele angezeigt. Auf dieser Seite können Sie Ein- und Ausgaben sowie Ausgabespalten, die Sie im benutzerdefinierten Skript verwenden möchten, hinzufügen, entfernen und konfigurieren. Hierbei gelten folgende Einschränkungen:
Wenn die Skriptkomponente als Quelle verwendet wird, hat sie keine Eingabe, unterstützt jedoch mehrere Ausgaben.
Wenn die Skriptkomponente als Transformation verwendet wird, werden eine Eingabe und mehrere Ausgaben unterstützt.
Wenn die Skriptkomponente als Ziel verwendet wird, unterstützt sie eine Eingabe, hat jedoch keine Ausgaben.
Im Codeprojekt, das basierend auf diesen Metadaten erstellt wird, enthält das Projektelement BufferWrapper für jede Ein- und Ausgabe eine Klasse. Wenn Sie beispielsweise eine Ausgabe namens CustomerOutput erstellen, enthält das Projektelement BufferWrapper eine CustomerOutput-Klasse, die von ScriptBuffer abgeleitet ist, und die CustomerOutput-Klasse beinhaltet typisierte Accessoreigenschaften für jede erstellte Ausgabespalte.
Sie können Ausgabespalten nur auf der Seite Eingaben und Ausgaben konfigurieren. Eingabespalten für Transformationen und Ziele können Sie auf der Seite Eingabespalten auswählen. Für Ausgabespalten weisen die im Projektelement BufferWrapper erstellten typisierten Accessoreigenschaften nur Schreibzugriff auf. Die Accessoreigenschaften für Eingabespalten haben dagegen Lese- oder Lese-/Schreibzugriff, je nachdem, welche Nutzungsart Sie auf der Seite Eingabespalten für die jeweilige Spalte festgelegt haben.
Weitere Informationen zum Konfigurieren von Ein- und Ausgaben für einen bestimmten Datenflusskomponententyp finden Sie im entsprechenden Beispiel unter Entwickeln bestimmter Arten von Skriptkomponenten.
Hinweis |
---|
Zur automatischen Bearbeitung von Fehlerzeilen können Sie eine Ausgabe in der Skriptkomponente zwar nicht direkt als Fehlerausgabe konfigurieren, aber Sie können die Funktion einer Fehlerausgabe reproduzieren, indem Sie eine weitere Ausgabe erstellen und ein Skript verwenden, um Zeilen ggf. an diese Ausgabe weiterzuleiten. Weitere Informationen finden Sie unter Simulieren einer Fehlerausgabe für die Skriptkomponente. |
Eigenschaften 'ExclusionGroup' und 'SynchronousInputID' von Ausgaben
Die ExclusionGroup-Eigenschaft hat nur in Transformationen mit synchronen Ausgaben einen Wert ungleich null, in denen der Code einen Filter oder eine Verzweigung ausführt und jede Zeile an eine der Ausgaben weiterleitet, die denselben ExclusionGroup-Wert ungleich null aufweisen. Die Transformation kann Zeilen beispielsweise entweder an die Standard- oder eine Fehlerausgabe weiterleiten. Wenn Sie für dieses Szenario zusätzliche Ausgaben erstellen, achten Sie darauf, den Wert der SynchronousInputID-Eigenschaft auf die ganze Zahl festzulegen, die der ID der Komponenteneingabe entspricht.
Die SynchronousInputID-Eigenschaft verfügt nur in Transformationen mit synchronen Ausgaben über einen Wert ungleich null. Wenn der Wert dieser Eigenschaft null ist, bedeutet dies, dass die Ausgabe asynchron ist. Für eine synchrone Ausgabe, bei der Zeilen an die gewählten Ausgaben übergeben werden, ohne neue Zeilen hinzuzufügen, sollte die Eigenschaft die ID der Komponenteneingabe enthalten.
Hinweis |
---|
Wenn der Transformations-Editor für Skripterstellung die erste Ausgabe generiert, legt er die SynchronousInputID-Eigenschaft der Ausgabe auf die ID der Komponenteneingabe fest. Bei der Erstellung weiterer Ausgaben legt der Editor die SynchronousInputID-Eigenschaften dieser Ausgaben auf null fest. Wenn Sie eine Komponente mit synchronen Ausgaben erstellen, muss die SynchronousInputID-Eigenschaft für jede Ausgabe auf die ID der Komponenteneingabe gesetzt sein. Daher muss für jede Ausgabe, die der Editor nach der ersten generiert, der SynchronousInputID-Wert von null in die ID der Komponenteneingabe geändert werden. Wenn Sie eine Komponente mit asynchronen Ausgaben erstellen, muss die SynchronousInputID-Eigenschaft für jede Ausgabe auf null gesetzt sein. Daher muss für die erste Ausgabe der SynchronousInputID-Wert von der ID der Komponenteneingabe in null geändert werden. |
Ein Beispiel für das Weiterleiten von Zeilen an eine von zwei synchronen Ausgaben in der Skriptkomponente finden Sie unter Erstellen einer synchronen Transformation mit der Skriptkomponente.
Objektnamen in generiertem Skript
Die Skriptkomponente analysiert die Namen von Ein- und Ausgaben sowie von Spalten in den Ein- und Ausgaben und generiert basierend auf diesen Namen Klassen und Eigenschaften im Projektelement BufferWrapper. Falls die gefundenen Namen Zeichen beinhalten, die nicht in die Unicode-Kategorien UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter oder DecimalDigitLetter gehören, werden die ungültigen Zeichen aus den generierten Namen entfernt. Da beispielsweise Leerzeichen entfernt werden, werden zwei Eingabespalten mit den Namen FirstName und [First Name] beide so interpretiert, als trügen sie den Spaltennamen FirstName. Dies kann unvorhersehbare Ergebnisse zur Folge haben. Um eine solche Situation zu vermeiden, sollten die Namen von Ein- und Ausgaben sowie Eingabe- und Ausgabespalten, die von der Skriptkomponente verwendet werden, nur Zeichen aus den in diesem Abschnitt genannten Unicode-Kategorien enthalten.
Seite 'Skript' des Transformations-Editors für Skripterstellung
Auf der Seite Skript im Skripttask-Editor können Sie dem Skripttask einen eindeutigen Namen und eine Beschreibung zuweisen. Außerdem können Sie Werte für die folgenden Eigenschaften zuweisen.
Hinweis |
---|
In SQL Server 2008 Integration Services (SSIS) werden alle Skripts vorkompiliert. In vorherigen Versionen mussten Sie dafür die Precompile-Eigenschaft für den Task festlegen. |
Eigenschaft 'ValidateExternalMetadata'
Der boolesche Wert der ValidateExternalMetadata-Eigenschaft gibt an, ob die Komponente zur Entwurfszeit eine Prüfung anhand externer Datenquellen ausführen oder diese Prüfung bis zur Laufzeit verschieben soll. Standardmäßig weist diese Eigenschaft den Wert True auf, d. h. die externen Metadaten werden zur Entwurfs- und zur Laufzeit geprüft. Wenn eine externe Datenquelle zur Entwurfszeit nicht verfügbar ist, sollten Sie den Wert der Eigenschaft auf False setzen, beispielsweise falls das Paket die Quelle erst zur Laufzeit herunterlädt oder das Ziel erst dann erstellt.
Eigenschaften 'ReadOnlyVariables' und 'ReadWriteVariables'
Sie können kommagetrennte Listen vorhandener Variablen als Werte dieser Eigenschaften eingeben, um die Variablen für schreibgeschützten oder Lese-/Schreibzugriff im Code der Skriptkomponente verfügbar zu machen. Auf Variablen wird im Code über die Eigenschaften ReadOnlyVariables und ReadWriteVariables der automatisch generierten Basisklasse zugegriffen. Weitere Informationen finden Sie unter Verwenden von Variablen in der Skriptkomponente.
Hinweis |
---|
Bei Variablennamen wird nach Groß-/Kleinschreibung unterschieden. |
Skriptsprache
Sie können entweder Microsoft Visual Basic 2008 oder Microsoft Visual C# 2008 als Programmiersprache für die Skriptkomponente wählen.
Schaltfläche 'Skript bearbeiten'
Die Schaltfläche Skript bearbeiten öffnet die Microsoft Visual Studio Tools for Applications (VSTA) IDE, in der Sie das benutzerdefinierte Skript schreiben. Weitere Informationen finden Sie unter Codieren und Debuggen der Skriptkomponente.
Seite 'Verbindungs-Manager' des Transformations-Editors für Skripterstellung
Auf der Seite Verbindungs-Manager des Transformations-Editors für Skripterstellung können Sie Verbindungs-Manager hinzufügen und entfernen, die im benutzerdefinierten Skript verwendet werden sollen. Normalerweise müssen Sie Verbindungs-Manager mit Verweisen versehen, wenn Sie eine Quell- oder Zielkomponente erstellen.
Im Codeprojekt, das basierend auf diesen Metadaten erstellt wird, enthält das Projektelement ComponentWrapper eine Connections-Auflistungsklasse, die für jeden ausgewählten Verbindungs-Manager eine typisierte Accessoreigenschaft aufweist. Jede typisierte Accessoreigenschaft trägt denselben Namen wie der jeweilige Verbindungs-Manager und gibt einen Verweis auf den Verbindungs-Manager als Instanz von IDTSConnectionManager100 zurück. Wenn Sie beispielsweise auf der Seite Verbindungs-Manager des Editors den Verbindungs-Manager MyADONETConnection hinzugefügt haben, können Sie mit dem folgenden Code einen Verweis auf diesen Verbindungs-Manager im Skript erhalten:
Dim myADONETConnectionManager As IDTSConnectionManager100 = _
Me.Connections.MyADONETConnection
Weitere Informationen finden Sie unter Herstellen einer Verbindung zu Datenquellen in der Skriptkomponente.
|