2016-07-26 8 views
0

betroffen sind Ich habe SQL-Befehl von Variable (im Allgemeinen ist es eine Select-Anweisung) als Quelle in DataFlow-Task. Ziel ist .csv Datei.Finden Sie heraus, wie viele Zeilen von SQL-Befehlsvariablen in Datenfluss-Task

Problem: Obwohl keine Zeilen von SQL-Befehl betroffen ist Variable generiert CSV-Datei ohne Datensätze. Ich möchte die Datei nicht erzeugen, wenn die select-Anweisung (aus der SQL-Befehlsvariablen) keine Datensätze auffüllt.

Bitte beraten Sie mich.

Antwort

1

Einfaches Verfahren: Sie können die Zeilen mit einer Abfrage vor dem Export zählen, mit SQL ausführen Task, wenn die Anzahl der Zeilen größer als 0 ist, dann mit dem Export fortfahren;
Das Folgende ist eine mögliche Lösung:

  • eine Abfrage wie SELEC COUNT (*) verwenden AS Mycount FROM ...
  • ein Paket Variable (myVariable mit Mycount zuzuordnen), enthält, um die Anzahl von Reihen
  • Satz Ergebnis einreihig in SQL Task Editor
  • die Variable in Registern Ergebnis Kartenset in SQL Editor für den Task (Mycount - myVariable) Set =
  • Verwendung zwei Pfeile, die von SQL ausführen Aufgabe in jedem Pfeil wählen Auswerteoperation: Ausdruck, Ausdruck: myVari ab> 0 (erster Pfeil) und myVariable == 0 (zweiter Pfeil), wählen Sie Logisch ODER, auf diese Weise haben Sie eine Verzweigung!
  • verbinden den Export in den Pfeil mit myVariable> 0
  • den anderen Pfeil auf eine andere mögliche Aufgabe verbinden, zum Beispiel kann es Sie warnen, dass es keine Zeilen per E-Mail

zum Zählen von Zeilen sind auch verwenden können, die Aufgabe: Zeilenanzahl (in den neuesten SSIS-Versionen vorhanden); Die Zeilenanzahl-Umwandlung zählt Zeilen, wenn sie einen Datenfluss durchlaufen, und speichert die endgültige Anzahl in einer Variablen.

Ich hoffe es hilft

+0

Danke Alex. Aber ich habe ein diff. Szenario. Es gibt einen Foreach-Loop-Container mit Foreach From Variable Enumerator. Basierend auf dieser Variablen-Skriptaufgabe wird die sqlCommand-Abfrage erstellt, die als SQLCommad von der Variable an die Datenfluss-Task-Quelle übergeben wird. JA Ich habe die Zeilenzählfunktion verwendet, geht aber letztendlich zum Datenflusstaskziel und erstellt eine CSV-Datei. –

+0

Vielen Dank auch, Warum nicht auch dynamisch erstellen die Abfrage Zeilen (innerhalb einer Variablen) und dann Platzieren Sie die Überprüfung der Anzahl der Zeilen (SQL-Aufgabe mit Abfrage von Variable ausführen) vor der Datenflusstask? Auf diese Weise sind Sie immer noch in der Schleife. –

+0

Ja Alex das ist eine Lösung. Gibt es einen anderen Ansatz, so dass wir wissen, dass keine Datensätze von der Dataflow-Task-Quelle (SQLCommand von Variablen) betroffen sind, und leiten Sie die Ausgabe der Ausgabedatei nicht um. –