none
SQL Abfrage(n) automatisch ausführen nach ausführen eines DTSX Paketes RRS feed

  • Frage

  • Hallo miteinander!

    Kurze Info zu unserer Umgebung:
    Wir haben einen SQL Server (2017) in der Firma auf dem ein WAWI läuft.

    Wir müssen 1x in der Woche 3 Tabellen von unserem internen Server auf einen externe Server (2017) hochladen, danach ein paar gespeicherte SQL Abfragen ausführen, ein Ergebnis dieser Abfragen als XML speichern un dieses per FTP hochladen.

    Im Moment passiert das so:

    Mit dem SQL Managment Studio zu beiden Servern verbinden, die Tabellen mit dem Import/Export Assistenten hochladen, danach am Zielserver die SQL Abfragen durchführen, das eine Ergebnis das eine XML Datei erzeugt mit Mausklick speichern und danach hochladen per FTP. Zum Schluss werden die importierten Dateien am Zielserver wieder gelöscht.

    Ich habe jetzt den Import/Export als SSIS Paket gespeichert, das ist schon eine Erleichterung.

    Nun die Frage: wie kann man es am besten/einfachsten umsetzen die restliche Schritte komplett zu automatisieren?
    Kann man das DTSX Paket so modifizieren das er nach dem Upload die SQL Abfragen ausführt und die Tabellen wieder löscht?

    Danke vorab für Eure Mühe

    Gruß, Tom

    Freitag, 15. März 2019 11:52

Antworten

  • Das SSIS im wesentlichen nur SQL's ausführt, geht dies u.U. hiermit:
    https://www.mssqltips.com/sqlservertutorial/9069/deploy-and-schedule-an-sql-server-integration-services-ssis-package-step-by-step/

    Alles andere geht mehr oder weniger per Aufgabenplanung.
    "dtexec" ist dein Freund:
    https://stackoverflow.com/questions/8079616/how-to-schedule-a-ssis-package-job-in-sql-sheduler-or-windows-scheduler

    Für den gesamten Ablauf benötigst du u.U. dann 2 Scripts. 1x Erstellen der Outputs, 1x Löschen der Tabellen.
    Wobei letzteres würde ich eher zuerst machen, so dass nach dem Lauf das Ergebnis noch da ist und vor dem nächsten Lauf erst entfernt wird.

    also:

    dtexec <PaketClear>
    dtexec <PaketCreateFiles>
    batchftp ....

    Das Ganze per .BAT, .CMD, .ps1, ...

    • Als Antwort markiert Thomas Elser Samstag, 16. März 2019 12:09
    Freitag, 15. März 2019 12:48
  • Hallo Thomas,

    vielleicht verstehe ich deine Frage falsch aber, wenn es darum geht  die SQL Abfragen automatisch auszuführen und die Tabellen wieder löschen, brauchst du in SSIS das Task SQL-Ausführen(am einfachsten 2, eine für SQL Abfragen automatisch auszuführen und eine für Tabellen löschen ). Damit ist die Aufgabe erledigt.

    Für FTP gibt es im SSIS auch ein FTP Task

    hier kannst du auch lesen https://docs.microsoft.com/de-de/sql/tutorials/task-14-add-execute-to-control-flow-run-mds-stored-procedure?view=sql-server-2014

    ich hoffe deine Frage verstanden zu haben ansonsten Bescheid sagen

    Gruß

    Elvis

    • Als Antwort markiert Thomas Elser Samstag, 16. März 2019 12:09
    Freitag, 15. März 2019 15:15
  • Ich finde, dies ist hier ganz gut beschrieben.

    https://www.codeproject.com/Articles/635956/How-to-export-data-from-database-tables-to-an-XML

    • Als Antwort markiert Thomas Elser Samstag, 16. März 2019 12:09
    Freitag, 15. März 2019 22:50

Alle Antworten

  • Das SSIS im wesentlichen nur SQL's ausführt, geht dies u.U. hiermit:
    https://www.mssqltips.com/sqlservertutorial/9069/deploy-and-schedule-an-sql-server-integration-services-ssis-package-step-by-step/

    Alles andere geht mehr oder weniger per Aufgabenplanung.
    "dtexec" ist dein Freund:
    https://stackoverflow.com/questions/8079616/how-to-schedule-a-ssis-package-job-in-sql-sheduler-or-windows-scheduler

    Für den gesamten Ablauf benötigst du u.U. dann 2 Scripts. 1x Erstellen der Outputs, 1x Löschen der Tabellen.
    Wobei letzteres würde ich eher zuerst machen, so dass nach dem Lauf das Ergebnis noch da ist und vor dem nächsten Lauf erst entfernt wird.

    also:

    dtexec <PaketClear>
    dtexec <PaketCreateFiles>
    batchftp ....

    Das Ganze per .BAT, .CMD, .ps1, ...

    • Als Antwort markiert Thomas Elser Samstag, 16. März 2019 12:09
    Freitag, 15. März 2019 12:48
  • Hallo Thomas,

    vielleicht verstehe ich deine Frage falsch aber, wenn es darum geht  die SQL Abfragen automatisch auszuführen und die Tabellen wieder löschen, brauchst du in SSIS das Task SQL-Ausführen(am einfachsten 2, eine für SQL Abfragen automatisch auszuführen und eine für Tabellen löschen ). Damit ist die Aufgabe erledigt.

    Für FTP gibt es im SSIS auch ein FTP Task

    hier kannst du auch lesen https://docs.microsoft.com/de-de/sql/tutorials/task-14-add-execute-to-control-flow-run-mds-stored-procedure?view=sql-server-2014

    ich hoffe deine Frage verstanden zu haben ansonsten Bescheid sagen

    Gruß

    Elvis

    • Als Antwort markiert Thomas Elser Samstag, 16. März 2019 12:09
    Freitag, 15. März 2019 15:15
  • Super, vielen Dank Euch beiden.

    Ich habe bis auf das speichern der XML Datei alles umsetzen können.

    Habt Ihr eventuell noch eine Idee wie es zu schaffen wäre folgende Abfrage nicht nur als Grid in den Ergebnissen anzuzeigen sonder als XML Datei zu speichern?

    SELECT X, Y, Z
    FROM A
    WHERE A.X Not Like 'ABC%'
    ORDER BY Y
    FOR XML PATH ('Produkt'), ROOT ('Produkte')

    Wie gesagt muss ich das jetzt immer manuell im SSMS machen, wäre schön wenn sich das auch atomatisieren lässt.

    Nochmals vielen Dank für Eure Hilfe

    Tom

    Freitag, 15. März 2019 20:46
  • Ich finde, dies ist hier ganz gut beschrieben.

    https://www.codeproject.com/Articles/635956/How-to-export-data-from-database-tables-to-an-XML

    • Als Antwort markiert Thomas Elser Samstag, 16. März 2019 12:09
    Freitag, 15. März 2019 22:50
  • Ja, danke. Habe etwas ähnliches gefunden aber das hier ist besser erklärt.

    Danke nochmals für Eure Hilfe, alles funktioniert jetzt perfekt.

    Tom

    Samstag, 16. März 2019 12:09