2013-10-24 3 views
5

Ihre Hilfe ForceExecutionResult und Einsicht wird sehr geschätztSSIS Wie Erfolg für die Großeltern Container

In SSIS I = Erfolg für die Großeltern Container

Dies ist zu ForceExecutionResult brauchen, wie ich mein Paket zur Zeit eingerichtet haben:
Eltern Package = A
Child Package = B

- ein Paket-Task ruft B von A
Execute - Wenn B mit einer bestimmten E versagt Fehlercode, ich versuche es erneut B

Ich wiederhole B über den Ereignishandler OnError in der Paketausführung von A mit einer Skriptaufgabe.

Zu meiner Denkweise:
- A der Task Paket OnError Ereignishandler ist das Script Task Parent Container
- A der Task Paket ist der Großvater-Container des Script Task

Wie kann ich ForceExecutionResult = Erfolg für der Grandparent-Container (A's Paket ausführen), wenn der B-Retry erfolgreich ist?

Gerade jetzt, wenn der B-Retry erfolgreich ist, zeigt A's Paketausführungs-Task weiterhin Rot = Fehler als Folge des Fehlers, der beim ersten B-Versuch auftritt.

Suchen Sie nach einer programmatischen Möglichkeit, dies mit C# oder VB innerhalb einer Skriptaufgabe zu tun.

ich SSIS bin mit 2008

Vielen Dank für

+0

Ich denke, Sie brauchen eine externe Tabelle, um ein paar Fahnen und Zeug zu setzen. Ich meine, es ist machbar, aber es ist nur ein bisschen umständlich. Da Sie versuchen, B nach einem bestimmten Fehler erneut zu starten, muss das Paket den Status und den Fehlercode des ersten Laufs enthalten, um während des zweiten (oder dritten oder N-ten Laufs) auf dasselbe zu verweisen. Hoffe das hilft. – rvphx

Antwort

1

Haupt advise Lesen ist nicht Paket B nach OnError Ereignis erneut ausführen. Sie müssen B anrufen, sicherstellen, dass Paket A nicht fehlschlägt, das Ergebnis von Paket B bewerten und entscheiden, was zu tun ist.

  1. erstellen For Loop Behälter und es für eine bestimmte Anzahl von Malen (= max Anzahl der Durchläufe, wie in while i < 5 do) laufen zu lassen.

  2. Set Execute Package Aufgabe fehlgeschlagen Eltern und ganzes Paket bei Fehler.

  3. Evaluieren Sie den Ausführungscode in einem Script Task und beenden Sie den Container For Loop bei Erfolg/Fehler. (wie durch Einstellen von i = 5).

Wahrscheinlich können Sie Paket B von C# Script Task ausführen - Objektmodell überprüfen, wie das zu tun. Ich werde meine Antwort aktualisieren, wenn ich finde, wie.

+0

danke für Ihre Lösung. Ich glaube, es ist lebensfähig. In meinem speziellen Fall (100+ Kind-Paket-Anrufe) ist es wahrscheinlich nicht etwas, das ich implementieren werde, weil ich faul bin. Da ich keine Möglichkeit finde, dies mit C# oder VB innerhalb einer Skriptaufgabe zu tun, akzeptiere ich Ihre Antwort.Ich sehe nicht, wie es tatsächlich möglich ist, mit dem SSIS 2008-Objektmodell zu tun, was ich will. Es scheint nicht möglich zu sein, die Eigenschaften eines übergeordneten Pakets von einem untergeordneten Paket zu ändern. Mehr ist schade. –

Verwandte Themen