Wie fahre ich nach einem Fehler in SSIS fort?

12

Ich möchte folgendes implementieren: Bildbeschreibung hier eingeben

In diesem Paket möchte ich eine Liste der Datenbanknamen durchlaufen und die Einstellungen des Verbindungsmanagers dynamisch ändern.

Der erste Fehler bei "Verbindung testen" wird jedoch angehalten und die Paketausführung schlägt fehl.

Aber ich möchte meine Foreach-Schleife fortsetzen. Ich habe das Gefühl, dass dies möglich sein sollte (ansonsten, was ist der Anwendungsfall für diese roten Fehlerpfeile?)

Ich habe unter anderem versucht, mit "MaximumErrorCount" herumzuspielen.

Michael J Swart
quelle

Antworten:

12

Um die von mir gestellte Frage zu beantworten, können Sie nach Fehlern fortfahren, indem Sie sicherstellen, dass MaximumErrorCount für die Aufgabe und ihre übergeordneten Container Null ist. In diesem Fall bedeutet dies die Aufgabe "Verbindung testen", den Container "foreach" und das Paket selbst.

Am Ende habe ich etwas anderes gemacht. Und Jamie Thomsons Verify A Connection Before Using war hier hilfreich. Folgendes habe ich getan:

Ich habe die Aufgabe "Verbindung testen" durch eine Skriptaufgabe ersetzt. Die Skriptaufgabe war fast genau wie Jamies Skript, außer dass ich

  • Es wurde nur ein Verbindungsmanager verwendet, nicht alle.
  • Das Ergebnis der Aufgabe war immer Erfolg
  • und ich habe eine neue Variable "User :: ConnectionSucceeded" auf das Ergebnis des Verbindungstests gesetzt.

Ich habe auch die Pfeile aus der Testverbindungsaufgabe geändert, um Ausdrücke auszuwerten. Sie werden ausgewertet:

  • @ [User :: ConnectionSucceed] == True
  • @ [User :: ConnectionSucceed] == False

beziehungsweise.

Ich musste auch daran denken, die verschiedenen Einschränkungen zu bearbeiten, die für die Aufgabe "LastMonitored aktualisieren" gelten. Ich habe sie geändert, um ein logisches "ODER" zu verwenden.

So sieht mein SSIS-Paket jetzt aus: neues Paket

Michael J Swart
quelle
1

Der einfache Weg...

Doppelklicken Sie nach der Aufgabe "Verbindung testen" auf die Prioritätseinschränkung (die grüne Linie). Sie sollten "Constraint options" sehen, auf die Dropdown-Liste "Value" klicken und "Completion" auswählen. Dies weist Ihr Paket an, die Ausführung fortzusetzen, nachdem die Aufgabe abgeschlossen ist, unabhängig davon, ob sie fehlschlägt.

Hinweis: Ändern Sie die Dropdown-Liste "Evaluierungsvorgang" nicht von "Einschränkung", es sei denn, Sie möchten einen Ausdruck hinzufügen, der nach Abschluss der Aufgabe evaluiert werden soll. Behalten Sie außerdem die Einschränkung bei "Logisches UND".

Hoffe das hilft.

Verwenden der Prioritätseinschränkung

Ein Eneyo
quelle
Die Prioritätseinschränkung wurde absichtlich auf "Erfolgreich" gesetzt. Außerdem wird durch Ändern in "Fertigstellung" die von mir gestellte Frage oder die Aufgabe, mit der ich zu kämpfen hatte, nicht beantwortet. Wenn "Verbindung testen" fehlschlägt, wird die Paketausführung trotzdem angehalten.
Michael J Swart
So viele Seiten gelesen, um endlich diese Antwort zu finden! Vielen Dank!
Alexkovelsky