none
SSIS Paket nur starten wenn neue Daten vorhanden RRS feed

  • Frage

  • Hallo an die Profis ;-)

    ich habe für einen täglichen Rechnungsexport über SSIS ein Paktet erstellt. Diese Daten werden in ein Flatfile geschrieben und dann in einem anderen System wieder eingelesen. Mehrere Tabellen via Joins usw. Das funktioniert soweit ganz gut...nun kommt es aber vor das nicht täglich Rechnungen geschrieben werden. Wie kann ich es lösen das das Paket nur dann durchläuft wenn auch aktuelle Daten vorhanden sind ? Es gibt in der Rechnungstabelle einen Status der gesetzt wird, nach dem Export. Wäre das vielleicht ein Anhaltspunkt ? Also wenn in Tabelle Rechnung der Status 4 ist dann lass das Paket laufen ansonsten nicht. Da ich mich noch nicht so gut auskenne bin ich für jede Hilfe echt dankbar.

    Samstag, 26. Oktober 2013 09:44

Antworten

Alle Antworten

  • Man könnte im ControlFlow, vor dem eigentlichen Dataflow einen Select Count(*) auf Datensätze dieses Status durchführen (innerhalb eines SQL-Tasks), das Ergebnis in eine Variable schreiben, und diese dann im Precedence Constraint für Erfolg/Success auswerten, dass nur bei @var > 0 weiter der DataFlow ausgeführt wird.

    Ein Beispiel, wie man mit einem Precedence-Constraint arbeitet, habe ich auch in meinem Blog: www.insidesql.org/blogs/andreaswolter/2010/03/integration-services-looping-continue-on-error


    Andreas Wolter | Microsoft Certified Master SQL Server

    Blog: www.insidesql.org/blogs/andreaswolter
    Web: www.andreas-wolter.com | www.SarpedonQualityLab.com

    Samstag, 26. Oktober 2013 10:09
  • Mir fällt grad auf, das der Titel Deiner Frage noch etwas eindeutiger ist: das ganze Paket gar nicht erst zu starten.

    Das wäre auch einfach machbar, indem man vor dem SSIS-Ausführungsschritt im SQL Server Agent Job einen Step hat, der eben auf die Anzahl Datensätze mit einem bestimmten Status prüft, und wenn  es da keine gibt, mit Erfolg oder Fehler abbricht – und dadurch den folgenden Paket-Ausführungsschritt überspringt, zu einem anderen (mehr oder weniger Dummy-Step), der den Job dann mit Erfolg beendet (nur damit man keinen „Fehler“ im Protokoll hat.

    Grundsätzlich sollte ein SSIS Paket aber auch ohne Daten fehlerfrei durchlaufen.

     


    Andreas Wolter | Microsoft Certified Master SQL Server

    Blog: www.insidesql.org/blogs/andreaswolter
    Web: www.andreas-wolter.com | www.SarpedonQualityLab.com

    Samstag, 26. Oktober 2013 10:17
  • Hallo Andreas, erstmal vielen Dank für diesen Ansatz. Klar..das Paket läuft auch ohne Daten durch..nur will der Empfänger keine Datei ohne Daten haben ;-) Ich werde mal versuchen Deinen Ansatz mit der Variable umzusetzen..denke das hilft mir schon weiter. Werde berichten ;-)
    Samstag, 26. Oktober 2013 11:04
  • So ich habe es nun mit einer Variablen programmiert. Es funktioniert Super. Wenn keine Rechnung den Status 4 hat läuft das Paket nicht und somit ist mein Problem gelöst. Vielen Dank nochmal und ein schönes We wünscht Erhard..

    Samstag, 26. Oktober 2013 16:08