SSIS: Wie ziehe ich eine SQL-Anweisung aus einer Datei in eine string-variable?
Habe ich ein paar SQL-Anweisungen als text in Dateien abgelegt. Wie ziehe ich diese Dateien in eine string-variable in SSIS, so dass ich die gleiche Abfrage verwenden an mehreren stellen?
Antwort auf die Fragen:
Abfragen sind lang und Komplex, etwas, das ich würde es vorziehen, zu Bearbeiten, in einem echten text-editor, nicht innerhalb der SSIS-text-Boxen. Ich würde auch, wie die Anfragen bearbeitet werden, die von Menschen, die keinen Zugang zu SSIS, oder nicht wissen, wie es zu benutzen. Schließlich wird jeder der Abfragen verwendet wird, in einer Anzahl von unterschiedlichen Datenflüssen. Korrigieren Sie mich, wenn ich falsch Liege, aber wenn ich die gleiche Abfrage in mehrere Flecken, ich glaube, ich habe entweder eine variable oder neu schreiben, damit der code für jeden Datenfluss.
- Aber warum wollen Sie das pull-Abfragen von Dateien anstatt direkt mit Ihnen in Paket? Und wie/wo Sie diese Abfragen in ein Paket? Erklären Sie bitte mehr über Ihre Anforderung und aus dieser eine richtige Weg, die vorgeschlagen werden können.
- Ich bearbeitet die post, Ihre Fragen zu beantworten. Vielen Dank,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie ich diese Sache sehr (nach der Suche überall nach einer Antwort und findet Sie nicht.)
Begonnen habe ich mit einem Paket, dass der Assistent zum Exportieren von Daten erstellt, so dass meine Anleitung etwas anfangen. Dabei legt die spaltenzuordnungen. Wenn Sie nicht verwenden Sie den Export-Assistenten, um das Paket zu erstellen, die Sie haben können, um Spalten von hand.
der Weg von Ihr .sql-Datei.
Datei angegeben SqlFileName in
SQLCommand.
Bearbeiten Sie die Eigenschaften unter Verwendung der
Eigenschaften-Fenster. Wenn Sie die
Lust auf Edit-Fenster erhalten Sie eine
Fehler über den Befehl text nicht
gesetzt werden muss. Es ist, weil SQLCommand
leer ist zur design-Zeit.
weil das SQLCommand-Objekt leer ist. Zu
verhindern Sie das rote X, ändern
ValidateExternalMetaData auf False.
Dass es über. Ich hoffe, ich erinnerte mich an all die bits. Das Skript ist der Schlüssel, so dass Sie bekommen können, die SQL in einer Variablen zu, und verwenden Sie dann die variable in die die Daten Fließen.
Ich würde nicht empfehlen, dies zu tun. Mein Vorschlag ist eine gespeicherte Prozedur.
Hier ist, wie, wenn,
Erstellen Sie eine Datei Verbindung unter connection manager.
Öffnen Sie die Eigenschaften für die Datei-Verbindung, und Bearbeiten Sie die Ausdrücke.
Erstellen Sie einen Ausdruck für die Eigenschaft der Verbindungszeichenfolge enthält die SQL-Datei-Pfad (so etwas wie
@[User::SQLFileName]
wo SQLFileName ist eine variable).Richten Sie Ihre task SQL ausführen und die Datei-Verbindung mit dem Ausdruck, den Sie gerade erstellt haben.
Wenn Sie ändern Sie den Pfad in der Variablen, es wird sich ändern, was SQL ausgeführt wird (da der Ausdruck wird zur Laufzeit ausgewertet). Man könnte sogar laden Sie diese Pfade aus einer db, und für jede enthält einen task SQL ausführen.
Wenn Sie das laden von Daten in/out verwenden Sie diese Dateien, und nicht nur SQL ausführen, werden Sie brauchen, um zu sehen, die Spalten und meta-Daten.
Kris
Alternativ (und dies möglicherweise nicht für Sie selbst), können Sie eine Ansicht erstellen, die auf die eigentliche Datenbank, die verändert werden können, ohne Zugriff auf das SSIS-Paket. Andere Benutzer können dann Bearbeiten Sie die SQL, wie Sie erwähnen, und Sie könnten sogar einige der intellisense-Unterstützung in den Handel.
Ich bin kein fan von dem schreiben von SQL-SSIS-Textfelder entweder.