Codieren und Debuggen der Skriptkomponente
Im SSIS-Designer weist die Skriptkomponente zwei Modi auf, nämlich den Metadatenentwurfsmodus und Codeentwurfsmodus. Wenn Sie den Transformations-Editor für Skripterstellung öffnen, befindet sich die Komponente im Metadatenentwurfsmodus, in dem Metadaten konfiguriert und Komponenteneigenschaften festgelegt werden. Nachdem Sie die Eigenschaften der Skriptkomponente festgelegt und die Eingaben und Ausgaben im Metadatenentwurfsmodus konfiguriert haben, können Sie zum Schreiben des benutzerdefinierten Skripts in den Codeentwurfsmodus wechseln. Weitere Informationen zum Metadatenentwurfsmodus und Codeentwurfsmodus finden Sie unter Konfigurieren der Skriptkomponente im Skriptkomponenten-Editor.
Schreiben des Skripts im Codeentwurfsmodus
Skriptkomponenten-Entwicklungsumgebung
Klicken Sie zum Schreiben des Skripts im Transformations-Editor für Skripterstellung auf der Seite Skript auf Skript bearbeiten, um die Microsoft Visual Studio Tools for Applications (VSTA) IDE zu öffnen. Die VSTA IDE enthält alle Standardfunktionen der Visual Studio .NET-Umgebung wie den Visual Studio-Editor mit Farbcodierung, IntelliSense und den Objektkatalog.
Skriptcode wird in Microsoft Visual Basic 2008 oder Microsoft Visual C# 2008 geschrieben. Sie geben die Skriptsprache an, indem Sie die ScriptLanguage-Eigenschaft im Transformations-Editor für Skripterstellung festlegen. Falls Sie lieber eine andere Programmiersprache verwenden möchten, können Sie in Ihrer bevorzugten Sprache eine benutzerdefinierte Assembly entwickeln und ihre Funktionen aus dem Code in der Skriptkomponente aufrufen.
Das in der Skriptkomponente erstellte Skript wird in der Paketdefinition gespeichert. Es gibt keine separate Skriptdatei. Deshalb hat die Verwendung der Skriptkomponente keinen Einfluss auf die Paketbereitstellung.
Hinweis |
---|
Beim Entwurf des Pakets wird der Skriptcode vorübergehend in eine Projektdatei geschrieben. Da das Speichern vertraulicher Informationen in einer Datei ein Sicherheitsrisiko darstellt, sollte der Skriptcode keine vertraulichen Daten wie Kennwörter enthalten. |
Standardmäßig ist Option Strict in der IDE deaktiviert.
Skriptkomponenten-Projektstruktur
Die Leistungsfähigkeit der Skriptkomponente rührt daher, dass Infrastrukturcode erstellt werden kann, mit dem der erforderliche Codeumfang reduziert werden kann. Für diese Funktion ist es erforderlich, dass Eingaben und Ausgaben mit den zugehörigen Spalten und Eigenschaften festgelegt und im Voraus bekannt sind. Aus diesem Grund können nachträgliche Änderungen an den Metadaten der Komponente dazu führen, dass der von Ihnen geschriebene Code ungültig wird. Dies verursacht während der Ausführung des Pakets Kompilierungsfehler.
Projektelemente und -klassen im Skriptkomponentenprojekt
Wenn Sie in den Codeentwurfsmodus wechseln, wird die VSTA IDE geöffnet und zeigt das ScriptMain-Projektelement an. Das ScriptMain-Projektelement enthält die bearbeitbare ScriptMain-Klasse, die als Einstiegspunkt für das Skript dient und in die der Code geschrieben wird. Die Codeelemente in der Klasse variieren abhängig davon, welche Programmiersprache Sie für den Skripttask gewählt haben.
Das Skriptprojekt enthält zwei zusätzliche, automatisch generierte und schreibgeschützte Projektelemente:
Das ComponentWrapper-Projektelement enthält drei Klassen:
Die UserComponent-Klasse, die von ScriptComponent erbt und die Methoden und Eigenschaften enthält, die Sie verwenden, um Daten zu verarbeiten und mit dem Paket zu interagieren. Die ScriptMain-Klasse erbt von der UserComponent-Klasse.
Eine Connections-Auflistungsklasse mit Verweisen zu den im Transformations-Editor für Skripterstellung auf der Seite Verbindungs-Manager ausgewählten Verbindungen.
Eine Variables-Auflistungsklasse mit Verweisen zu den Variablen, die im Transformations-Editor für Skripterstellung auf der Seite Skript in den Eigenschaften ReadOnlyVariable und ReadWriteVariables eingegeben wurden.
Das BufferWrapper-Projektelement enthält eine Klasse, die für jede auf der Seite Eingaben und Ausgaben des Transformations-Editor für Skripterstellung konfigurierte Eingabe und Ausgabe von ScriptBuffer erbt. Jede dieser Klassen enthält typisierte Accessoreigenschaften, die mit den konfigurierten Eingabe- und Ausgabespalten übereinstimmen, sowie die Datenflusspuffer, in denen sich diese Spalten befinden.
Weitere Informationen zur Verwendung dieser Objekte, Methoden und Eigenschaften finden Sie unter Grundlegendes zum Skript-Komponentenobjektmodell. Informationen darüber, wie die Methoden und Eigenschaften dieser Klassen in einem bestimmten Skriptkomponententyp zu verwenden sind, finden Sie im Abschnitt Zusätzliche Skriptkomponentenbeispiele. Die Beispielthemen enthalten auch vollständige Codebeispiele.
Bei der Konfiguration der Skriptkomponente als Transformation enthält das ScriptMain-Projektelement den folgenden automatisch generierten Code:
' Microsoft SQL Server Integration Services Script Component
' Write scripts using Microsoft Visual Basic 2008.
' ScriptMain is the entry point class of the script.
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
Inherits UserComponent
Public Overrides Sub PreExecute()
MyBase.PreExecute()
'
' Add your code here for preprocessing or remove if not needed
'
End Sub
Public Overrides Sub PostExecute()
MyBase.PostExecute()
'
' Add your code here for postprocessing or remove if not needed
' You can set read/write variables here, for example:
' Me.Variables.MyIntVar = 100
'
End Sub
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
'
' Add your code here
'
End Sub
End Class
/* Microsoft SQL Server Integration Services user script component
* Write scripts using Microsoft Visual C# 2008.
* ScriptMain is the entry point class of the script.*/
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
public override void PreExecute()
{
base.PreExecute();
/*
Add your code here for preprocessing or remove if not needed
*/
}
public override void PostExecute()
{
base.PostExecute();
/*
Add your code here for postprocessing or remove if not needed
You can set read/write variables here, for example:
Variables.MyIntVar = 100
*/
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
/*
Add your code here
*/
}
}
Zusätzliche Projektelemente im Skriptkomponentenprojekt
Das Skriptkomponentenprojekt kann neben dem Standardelement ScriptMain noch weitere Elemente enthalten. Sie können dem Projekt Klassen, Module, Codedateien und Ordner hinzufügen und die Ordner zum Organisieren von Elementgruppen verwenden.
Alle Elemente, die Sie hinzufügen, werden im Paket beibehalten.
Verweise im Skriptkomponentenprojekt
Sie können Verweise auf verwaltete Assemblys hinzufügen, indem Sie im Projektexplorer mit der rechten Maustaste auf das Skripttaskprojekt und anschließend auf Verweis hinzufügen klicken. Weitere Informationen finden Sie unter Verweisen auf andere Assemblys in Skriptlösungen.
Hinweis |
---|
Sie können Projektverweise in der VSTA IDE in der Klassenansicht oder im Projektexplorer anzeigen. Diese Fenster öffnen Sie über das Menü Sicht. Einen neuen Verweis können Sie über das Menü Projekt, den Projektexplorer oder die Klassenansicht hinzufügen. |
Interagieren mit Paketen in der Skriptkomponente
Das benutzerdefinierte Skript, das in der Skriptkomponente geschrieben wird, kann mithilfe von stark typisierten Accessoren in automatisch generierten Basisklassen auf Variablen und Verbindungs-Manager aus dem entsprechenden Paket zugreifen und diese verwenden. Die Variablen und Verbindungs-Manager müssen vor dem Wechseln in den Codeentwurfsmodus konfiguriert werden, wenn sie für das Skript zur Verfügung stehen sollen. Sie können auch Ereignisse auslösen und die Protokollierung von Ihrem Skriptkomponentencode ausführen.
Die automatisch generierten Projektelemente im Skriptkomponentenprojekt stellen die folgenden Objekte, Methoden und Eigenschaften zum Interagieren mit dem Paket bereit.
Funktion des Pakets |
Zugriffsmethode |
---|---|
Variablen |
Verwenden Sie die benannten, typisierten Accessoreigenschaften in der Variables-Auflistungsklasse im ComponentWrapper-Projektelement, die über die Variables-Eigenschaft der ScriptMain-Klasse bereitgestellt werden. Die PreExecute-Methode kann nur auf schreibgeschützte Variablen zugreifen. Die PostExecute-Methode kann sowohl auf schreibgeschützte als auch auf Lese-/Schreibvariablen zugreifen. |
Verbindungen |
Verwenden Sie die benannten, typisierten Accessoreigenschaften in der Connections-Auflistungsklasse im ComponentWrapper-Projektelement, die über die Connections-Eigenschaft der ScriptMain-Klasse bereitgestellt werden. |
Ereignisse |
Ereignisse werden mit der ComponentMetaData-Eigenschaft der ScriptMain-Klasse und den Fire<X>-Methoden der IDTSComponentMetaData100-Schnittstelle ausgelöst. |
Anmeldung |
Protokollierungen werden mit der Log-Methode der ScriptMain-Klasse ausgeführt. |
Debuggen der Skriptkomponente
Die Skriptkomponente unterstützt die Verwendung von Haltepunkten nicht. Deshalb können Sie bei der Ausführung des Pakets den Code nicht schrittweise durchgehen und die Werte überprüfen. Sie können die Ausführung der Skriptkomponente mit den folgenden Methoden überwachen:
Unterbrechen Sie die Ausführung, und zeigen Sie mit der MessageBox.Show-Methode im System.Windows.Forms-Namespace eine modale Meldung an. (Entfernen Sie diesen Code, nachdem der Debugprozess abgeschlossen wurde.)
Lösen Sie Ereignisse für Informationsmeldungen, Warnungen und Fehler aus. Die Methoden FireInformation, FireWarning und FireError zeigen die Ereignisbeschreibung im Fenster Ausgabe von Visual Basic an. Die FireProgress-Methode, die Console.Write-Methode und Console.WriteLine-Methode zeigen keine Informationen im Fenster Ausgabe an. Meldungen vom FireProgress-Ereignis werden auf der Registerkarte Status des SSIS-Designers angezeigt. Weitere Informationen finden Sie unter Auslösen von Ereignissen in der Skriptkomponente.
Protokollieren Sie Ereignisse oder benutzerdefinierte Meldungen an aktivierte Protokollanbieter. Weitere Informationen finden Sie unter Protokollieren in der Skriptkomponente.
Wenn Sie lediglich die Ausgabe einer Skriptkomponente überprüfen möchten, die als Quelle oder Transformation konfiguriert ist, können Sie den Datenfluss mit Transformation für Zeilenanzahl anhalten und der Ausgabe der Skriptkomponente einen Daten-Viewer anfügen. Informationen zu Daten-Viewern finden Sie unter Debuggen des Datenflusses.
In diesem Abschnitt
Weitere Informationen zum Codieren der Skriptkomponente finden Sie in den folgenden Themen in diesem Abschnitt.
Grundlegendes zum Skript-Komponentenobjektmodell
Erklärt, wie die von der Skriptkomponente bereitgestellten Objekte, Methoden und Eigenschaften verwendet werden.Verweisen auf andere Assemblys in Skriptlösungen
Erklärt, wie auf Objekte von der .NET Framework-Klassenbibliothek in der Skriptkomponente verwiesen wird.Simulieren einer Fehlerausgabe für die Skriptkomponente
Erklärt, wie eine Fehlerausgabe für die Zeilen simuliert wird, die während der Verarbeitung durch die Skriptkomponente Fehler auslösen.
Externe Ressourcen
- Blogeintrag, VSTA-Setup- und Konfigurationprobleme für SSIS 2008- und R2-Installationen (unter blogs.msdn.com).
|