2012-03-29 3 views
1

Ich brauche eine Möglichkeit, eine gespeicherte Prozedur immer dann auszuführen, wenn mein SSIS-Paket beendet wird.SSIS-Ereignis (oder etwas), wenn ein Paket endet

Egal ob es ein Fehler oder Erfolg ist.

Gibt es eine Möglichkeit, dies ohne Verbindung von Fehlerereignissen von jeder meiner Aufgaben zu tun? Ich habe nach einem OnPackageEnd-Ereignis oder etwas gesucht, aber ich kann es nicht sehen.

Hat jemand von Ihnen irgendwelche Ideen?

+1

Etwas zu beachten, gibt es Bedingungen, die dazu führen, dass ein Paket die Validierung fehlschlägt (im Wesentlichen ein Fehler bei der Kompilierung). Unabhängig davon, wo Sie Ihre Fehlererkennungslogik in Ihrem Paket haben, kann das Paket, wenn es nicht validiert wird, nicht lange genug ausgeführt werden, um den Fehlerbehandlungsblock zu treffen. Und dann * theoretisch * wird eine Tabelle nicht für 10 Tage geladen und dann haben Sie verärgerte Verkäufer und Buchhalter, weil sie keine Gehaltsabrechnungen generieren können. In einem hypothetischen Szenario wie diesem sollten Sie einen Mechanismus zur Benachrichtigung über einen Backup-Fehler wie die Alarmoptionen des SQL-Agenten haben – billinkc

Antwort

2

Nun, ich denke, die einfachste Sache ist, die Ausführung des Procs als zweiten Schritt in dem Job hinzuzufügen, der das Paket ausführt, können Sie dort angeben, dass Sie zum nächsten Schritt bei Fehler sowie bei Erfolg gehen können.

Oder Sie die exec SQl Aufgabe, um das Paket am Ende des Prozesses (die den Erfolg Zweig erhält) und setzen Sie es in den Event-Handler für alle Fehler (wir machen den Event-Handler auf der Pacakage-Ebene nicht für einzelnen Schritten), tun wir das für einen Schritt, wo wir den gleichen ptoc, aber mit verschiedenen Eingabewerten im Falle des Scheiterns oder des Erfolgs laufen lassen.

3

In das Paket legen Sie alle Aufgaben in einem Container. Unterhalb des Containers setzen Sie den Execute-Proceduer-Task und für den Precedence-Constraint wählen Sie die Werte als "Completion" (Die Zeile wird in Blau, Grün standardmäßig angezeigt). Somit wird unabhängig vom Paketstatus (Erfolg oder Fehlschlag) der gespeicherte Proc ausgeführt.

0

Sie können einen Ereignishandler OnPostExecute des thepacakge erstellen und das proc auf ein Add-in Task SQL ausführen es

ODER

fügen Sie alle Ihre aktuellen Komponenten in einem Sequenz-Container und ziehen Sie den grünen Pfeil auf ein neue sql-Task-Komponente mit Ihrer Prozedur ausführen. Doppelklicken Sie auf den grünen Pfeil und wählen Sie "Abschluss" statt "Erfolg"

0

OnPostExecute wird für jede Aufgabe ausgeführt. Das ist also nicht gut für eine Anforderung, die OnPackageEnd-Art eines Ereignisses erwartet.

Verwandte Themen