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.
Verwenden Sie im Dialogfeld Optionen auf der Seite Allgemein die Option Skriptsprache, um die Standardskriptsprache für die Skriptkomponente festzulegen. Weitere Informationen finden Sie unter General Page.
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 im Transformations-Editor 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 z. B. eine ganzzahlige CustomerID-Spalte und eine Zeichenfolgenspalte "CustomerName" aus einer Eingabe auswählenCustomerInput
, enthält das BufferWrapper-Projektelement eine CustomerInput
Klasse, von ScriptBufferder abgeleitet wird, und die CustomerInput
Klasse macht eine ganzzahlige Eigenschaft namens CustomerID und eine Zeichenfolgeneigenschaft 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 Developing Specific Types of Script Components (Entwickeln bestimmter Arten von Skriptkomponenten).
Seite 'Eingaben und Ausgaben' des Transformations-Editors für Skripterstellung
Die Seite Eingaben und Ausgaben im Transformations-Editor 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 z. B. eine Ausgabe mit dem Namen CustomerOutput
erstellen, enthält das BufferWrapper-Projektelement eine CustomerOutput
Klasse, von ScriptBufferder die Klasse abgeleitet wird, und die CustomerOutput
Klasse enthält typierte 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 Developing Specific Types of Script Components (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 Simulating an Error Output for the Script Component (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 Skripttransformations-Editor die erste Ausgabe erstellt, legt der Editor die SynchronousInputID
Eigenschaft der Ausgabe auf die ID
Eingabe der Komponente 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 für jede Ausgabe die SynchronousInputID
Eigenschaft auf die ID
Eingabe der Komponente festgelegt 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 die erste Ausgabe ihren SynchronousInputID
Wert von der ID
Eingabe der Komponente in Null ändern.
Ein Beispiel für das Weiterleiten von Zeilen an eine von zwei synchronen Ausgaben in der Skriptkomponente finden Sie unter Creating a Synchronous Transformation with the Script Component (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) und höheren Versionen 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 Using Variables in the Script Component (Verwenden von Variablen in der Skriptkomponente).
Hinweis
Bei Variablennamen wird nach Groß-/Kleinschreibung unterschieden.
ScriptLanguage
Sie können Microsoft Visual Basic oder Microsoft Visual C# als Programmiersprache für die Skriptkomponente auswählen.
Schaltfläche 'Skript bearbeiten'
Die Schaltfläche Skript bearbeiten öffnet die Microsoft Visual Studio Tools for Applications-IDE (VSTA), in der Sie das benutzerdefinierte Skript schreiben. Weitere Informationen finden Sie unter Coding and Debugging the Script Component (Codieren und Debuggen der Skriptkomponente).
Seite 'Verbindungs-Manager' des Transformations-Editors für Skripterstellung
Auf der Seite Verbindungs-Manager im Transformations-Editor 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 Connecting to Data Sources in the Script Component (Herstellen einer Verbindung mit Datenquellen in der Skriptkomponente).
Mit Integrationsdiensten auf dem neuesten Stand bleiben
Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf der Seite Integration Services auf MSDN:
Besuchen Sie die Integration Services-Seite auf MSDN
Abonnieren Sie die auf der Seite verfügbaren RSS-Feeds, um automatische Benachrichtigungen zu diesen Updates zu erhalten.