Integration Services-Ereignishandler (SSIS)

Gilt für:SQL Server SSIS Integration Runtime in Azure Data Factory

Zur Laufzeit lösen ausführbare Dateien (Pakete und Foreach-Schleifencontainer, For-Schleifencontainer, Sequenzcontainer und Taskhostcontainer) Ereignisse aus. Beispielsweise wird ein OnError-Ereignis ausgelöst, wenn ein Fehler auftritt. Sie können benutzerdefiniert Ereignishandler für diese Ereignisse erstellen, um die Paketfunktionalität zu erweitern und die Verwaltung der Pakete zur Laufzeit zu vereinfachen. Mit Ereignishandlern können folgende Aufgaben ausgeführt werden:

  • Cleanup des temporären Datenspeichers, wenn die Ausführung eines Pakets oder Tasks beendet ist.

  • Abrufen von Systeminformationen, um die Ressourcenverfügbarkeit zu bewerten, bevor ein Paket ausgeführt wird.

  • Aktualisieren von Daten in einer Tabelle, wenn bei einer Suche in einer Verweistabelle ein Fehler auftritt.

  • Senden einer E-Mail-Nachricht bei einem Fehler oder einer Warnung oder bei einem Fehler im Zusammenhang mit einem Task.

Falls ein Ereignis keinen Ereignishandler aufweist, wird das Ereignis im nächsten übergeordneten Container der Containerhierarchie in einem Paket ausgelöst. Wenn dieser Container einen Ereignishandler aufweist, wird der Ereignishandler als Antwort auf das Ereignis ausgeführt. Andernfalls wird das Ereignis im nächsten übergeordneten Container der Containerhierarchie ausgelöst.

Im folgenden Diagramm wird ein einfaches Paket mit einem For-Schleifencontainer, der einen Task SQL ausführen enthält, angezeigt.

Paket, For-Schleife, Taskhost und Task „SQL ausführen“

Nur das Paket hat einen Ereignishandler, und zwar für das OnError -Ereignis. Wenn beim Ausführen des Tasks SQL ausführen ein Fehler auftritt, wird der OnError -Ereignishandler für das Paket ausgeführt. Im folgenden Diagramm wird die Aufrufsequenz angezeigt, durch die der OnError -Ereignishandler für das Paket ausgeführt wird.

Ereignishandlerflow

Ereignishandler sind Elemente einer Ereignishandlerauflistung, und alle Container schließen diese Auflistung ein. Wenn Sie das Paket mit dem SSIS -Designer erstellen, können Sie die Elemente der Ereignishandlerauflistungen im Ordner Ereignishandler auf der Registerkarte Paket-Explorer des SSIS -Designers anzeigen.

Es gibt folgende Möglichkeiten, um den Ereignishandlercontainer zu konfigurieren:

  • Geben Sie einen Namen und eine Beschreibung für den Ereignishandler an.

  • Geben Sie an, ob der Ereignishandler ausgeführt wird, ob für das Paket bei einem Ereignishandlerfehler ein Fehler gemeldet wird und nach wie vielen Fehlern der Ereignishandler einen Fehler meldet.

  • Geben Sie ein Ausführungsergebnis an, das anstelle des vom Ereignishandler zur Laufzeit zurückgegebenen Ausführungsergebnisses zurückgegeben werden soll.

  • Geben Sie die Transaktionsoption für den Ereignishandler an.

  • Geben Sie den Protokollierungsmodus für den Ereignishandler an.

Ereignishandlerinhalt

Das Erstellen eines Ereignishandlers ist mit dem Erstellen eines Pakets vergleichbar. Ein Ereignishandler weist Tasks und Container auf, die in einer Ablaufsteuerung angeordnet sind. Ein Ereignishandler kann außerdem Datenflüsse enthalten. Der SSIS -Designer weist die Registerkarte Ereignishandler zum Erstellen benutzerdefinierter Ereignishandler auf.

Ereignishandler können auch programmgesteuert erstellt werden. Weitere Informationen finden Sie unter Programmgesteuerte Behandlung von Ereignissen.

Laufzeitereignisse

In der folgenden Tabelle werden die Ereignishandler von Integration Services aufgeführt und die Laufzeitereignisse beschrieben, durch die die Ereignishandler ausgeführt werden.

Ereignishandler Ereignis
OnError Der Ereignishandler für das OnError -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, wenn ein Fehler auftritt.
OnExecStatusChanged Der Ereignishandler für das OnExecStatusChanged -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, wenn sich deren Ausführungsstatus ändert.
OnInformation Der Ereignishandler für das OnInformation -Ereignis. Dieses Ereignis wird während der Prüfung und Ausführung einer ausführbaren Datei ausgelöst, um Informationen zu melden. Dieses Ereignis übermittelt nur Informationen, keine Fehler oder Warnungen.
OnPostExecute Der Ereignishandler für das OnPostExecute -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, unmittelbar nachdem sie ausgeführt wurde.
OnPostValidate Der Ereignishandler für das OnPostValidate -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, nachdem sie überprüft wurde.
OnPreExecute Der Ereignishandler für das OnPreExecute -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, unmittelbar bevor sie ausgeführt wird.
OnPreValidate Der Ereignishandler für das OnPreValidate -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, wenn die Überprüfung gestartet wird.
OnProgress Der Ereignishandler für das OnProgress -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, wenn die ausführbare Datei einen messbaren Fortschritt aufweist.
OnQueryCancel Der Ereignishandler für das OnQueryCancel -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, um zu bestimmen, ob deren Ausführung beendet werden soll.
OnTaskFailed Der Ereignishandler für das OnTaskFailed -Ereignis. Dieses Ereignis wird durch einen Fehler bei einem Task ausgelöst.
OnVariableValueChanged Der Ereignishandler für das OnVariableValueChanged -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, wenn sich der Wert einer Variablen ändert. Dieses Ereignis wird durch die ausführbare Datei ausgelöst, für die die Variable definiert ist. Dieses Ereignis wird nicht ausgelöst, wenn Sie die RaiseChangeEvent -Eigenschaft für die Variable auf Falsefestlegen. Weitere Informationen finden Sie unter Integration Services-Variablen (SSIS).
OnWarning Der Ereignishandler für das OnWarning -Ereignis. Dieses Ereignis wird durch eine ausführbare Datei ausgelöst, wenn eine Warnung auftritt.

Hinzufügen eines Ereignishandlers zu einem Paket

Zur Laufzeit werden von Containern und Tasks Ereignisse ausgelöst. Sie können benutzerdefinierte Ereignishandler erstellen, die auf diese Ereignisse antworten, indem Sie einen Workflow ausführen, wenn das Ereignis ausgelöst wird. Beispielsweise können Sie einen Ereignishandler erstellen, der eine E-Mail-Nachricht sendet, wenn bei einem Task ein Fehler auftritt.

Ein Ereignishandler ist mit einem Paket vergleichbar. Ein Ereignishandler kann wie ein Paket einen Bereich für Variablen bereitstellen und enthält eine Ablaufsteuerung und optionale Datenflüsse. Sie können Ereignishandler für Pakete, den Foreach-Schleifencontainer, den For-Schleifencontainer, den Sequenzcontainer und alle Tasks erstellen.

Ereignishandler erstellen Sie mithilfe der Entwurfsoberfläche der Registerkarte Ereignishandler im SSIS -Designer.

Wenn die Registerkarte Ereignishandler aktiv ist, enthalten die Knoten Ablaufsteuerungselemente und Wartungsplantasks der Toolbox im SSIS -Designer den Task und die Container zum Erstellen der Ablaufsteuerung im Ereignishandler. Die Knoten Datenflussquellen, Transformationenund Datenflussziele enthalten die Datenquellen, Transformationen und Ziele zum Erstellen der Datenflüsse im Ereignishandler. Weitere Informationen finden Sie unter Control Flow und Data Flow.

Die Registerkarte Ereignishandler enthält auch den Bereich Verbindungs-Manager , in dem Sie die Verbindungs-Manager erstellen und ändern können, mit deren Hilfe Ereignishandler eine Verbindung mit Servern und Datenquellen herstellen. Weitere Informationen finden Sie unter Erstellen von Verbindungs-Managern.

Hinzufügen eines Ereignishandlers auf der Registerkarte „Ereignishandler“

  1. Öffnen Sie in SQL Server Data Tools (SSDT) das Integration Services-Projekt mit dem gewünschten Paket.

  2. Doppelklicken Sie im Projektmappen-Explorer auf das Paket, um es zu öffnen.

  3. Klicken Sie auf die Registerkarte Ereignishandler .

    Screenshot der Designoberfläche mit Ereignishandlern

    Das Erstellen der Ablaufsteuerung und der Datenflüsse in einem Ereignishandler ist mit dem Erstellen der Ablaufsteuerung und der Datenflüsse in einem Paket vergleichbar. Weitere Informationen finden Sie unter Control Flow und Data Flow.

  4. Wählen Sie in der Liste Ausführbare Datei die ausführbare Datei aus, für die Sie einen Ereignishandler erstellen möchten.

  5. Wählen Sie in der Liste Ereignishandler den Ereignishandler aus, den Sie erstellen möchten.

  6. Klicken Sie auf den Link auf der Entwurfsoberfläche der Registerkarte Ereignishandler .

  7. Fügen Sie dem Ereignishandler Ablaufsteuerungselemente hinzu, und verbinden Sie die Elemente mithilfe einer Rangfolgeneinschränkung, indem Sie die Einschränkung von einem Ablaufsteuerungselement auf ein anderes ziehen. Weitere Informationen finden Sie unter Control Flow.

  8. Fügen Sie wahlweise einen Datenfluss-Task hinzu, und erstellen Sie auf der Entwurfsoberfläche der Registerkarte Datenfluss einen Datenfluss für den Ereignis-Handler. Weitere Informationen finden Sie unter Data Flow.

  9. Klicken Sie im Menü Datei auf Ausgewählte Elemente speichern , um das neue Paket zu speichern.

Festlegen der Eigenschaften eines Ereignishandlers

Eigenschaften können Sie im Fenster Eigenschaften von SQL Server Data Tools (SSDT) oder programmgesteuert festlegen.

Informationen zum Anzeigen dieser Eigenschaften in SQL Server Data Tools (SSDT)finden Sie unter Festlegen der Eigenschaften eines Tasks oder Containers.

Weitere Informationen zum programmgesteuerten Festlegen dieser Eigenschaften finden Sie unter DtsEventHandler.

Informationen zum Hinzufügen eines Ereignishandlers zu einem Paket finden Sie unter Hinzufügen eines Ereignishandlers zu einem Paket.