TSQL und Datei schreiben

LauraM

Ensign
Registriert
Nov. 2019
Beiträge
133
Hallo, ich nutze MSSQL Server und dorterstelle ich eine xml Datei. Danach mache ich sie immer auf kopiere ich, setze ich notepad++ und speichere in entsprechenden Ordner. Das ist ein bisschen müsam und ich würde gerne es automatisch machen.
Wie kann ich in meine Abfrage sagen: schreibe die fertige xml Datei auf pfad: d:\\farben\

Viele Grüße
Laura
 
Willst du dabei nur einzelne Abfragen speichern oder die gesamte DB ?
 
Das geht leider nicht mit reinem SQL, so weit ich weiß. Wir haben in der Firma eigene Lösungen in C# (oder so) die wir als Assembly eingebunden haben.
 
Lord_Dragon schrieb:
Willst du dabei nur einzelne Abfragen speichern oder die gesamte DB ?
Hi, nur die eine Datei, die normaleweise ist in mssql als xml Datei gespeichert und ich möchte sie auf meinem Laufwerk haben.
 
Ok, das ist leider nicht so möglich. MS SQL hat keine wirkliche Export-Funktion. Wenn es um die gesamte DB gegangen wäre, hättest du dich nur lediglich zum Speicherort durchklicken müssen und dann C&P. Hätte man ua. mit einem Lesezeichen im Explorer vereinfachen können.
 
ok, kann man nicht irgendwie sagen: schreibe das Ergebnis unter: \\mein pfad ?
 
Das geht zum Beispiel aus einer Batchdatei heraus. Du musst die nötigen Parameter natürlich anpassen.
YOURQUERY.sql enthält die Datenbankabfrage. Bei mir sieht das etwa so aus:

rem -S [protocol:]server[instance_name][,port]
rem -d DATABASE
rem -u unicode output
rem -W suppress trailing blanks
rem -h -1 dont print headers
rem -i INPUTFILE
rem -o OUTPUTFILE

set DATUM=20200301

sqlcmd -S \\.\pipe\MSSQL$SQLEXPR2\sql\query -d YOURDATABASE -u -W -h -1 -i YOURQUERY.sql -o Results\Ausgabe-%DATUM%.txt

(Edit:) Das Results\Aus... steht natürlich noch in der vorhergehenden Zeile. Das wird hier nur nicht so dargestellt.
 
r0b0t schrieb:
(Edit:) Das Results\Aus... steht natürlich noch in der vorhergehenden Zeile. Das wird hier nur nicht so dargestellt.

Deswegen gibts hier tolle Code-Tags ;) :
Code:
em -S [protocol:]server[instance_name][,port]
rem -d DATABASE
rem -u unicode output
rem -W suppress trailing blanks
rem -h -1 dont print headers
rem -i INPUTFILE
rem -o OUTPUTFILE

set DATUM=20200301

sqlcmd -S \\.\pipe\MSSQL$SQLEXPR2\sql\query -d YOURDATABASE -u -W -h -1 -i YOURQUERY.sql -o Results\Ausgabe-%DATUM%.txt
 
LauraM schrieb:
ok, kann man nicht irgendwie sagen: schreibe das Ergebnis unter: \\mein pfad ?
Falls du die Möglchkeit hast Integration Services zu nutzen, kannst du damit ebenfalls ein automatisierten Workflow bauen, der dir die Dateien mit entsprechendem Inhalt an den Speicherort deiner Wahl ablegt.

Wie das geht KLICK
 
G-Red schrieb:
Falls du die Möglchkeit hast Integration Services zu nutzen, kannst du damit ebenfalls ein automatisierten Workflow bauen, der dir die Dateien mit entsprechendem Inhalt an den Speicherort deiner Wahl ablegt.

Wie das geht KLICK
Hi, danke euch, ich habe das gleiche , wie hier:
https://www.sqlshack.com/wp-content...ge-shows-the-result-of-an-sql-query-using.png

Aber wie ich das schreiben kann, wo das gespeichert sein soll- kann ich nicht. Leider, verstehe ich nicht.
Trotzdem danke für eure Antworte!
 
Wie gesagt, schaue ob du Microsoft SQL Server Integration Services bei dir installieren kannst. Damit kannst du dann dein Vorhaben realisieren.
 
G-Red schrieb:
Wie gesagt, schaue ob du Microsoft SQL Server Integration Services bei dir installieren kannst. Damit kannst du dann dein Vorhaben realisieren.
Dumme Frage: wie kann ich es schauen?
 
Nein, leider kann ich nicht. Wenn ich Integration Service Kataloge aufmache: kann ich Katalog erstellen/PowerShell starten. Un auf dem Bild ist DB in der Integration Service Katalog, bei mir nicht- das ist, wie leer.
Ergänzung ()

G-Red schrieb:
Wie gesagt, schaue ob du Microsoft SQL Server Integration Services bei dir installieren kannst. Damit kannst du dann dein Vorhaben realisieren.
Zweite heute und letzte dumme Frage: gib es keine andere Möglichkeit die Lösung/das Ergebnis (xml) auf dem Leufwerk automatisch zu speichern?
 
Ok, das heißt lediglich dass auf deiner SQL-Server instanz das SSIS verfügbar ist.
Um damit zu arbeiten Brauchst du das Visual Studio und die dazugehörigen SSDT Tools um Integration Services Workflows zu bauen.

Hab dir noch was per PN geschickt.
Ergänzung ()

LauraM schrieb:
Zweite heute und letzte dumme Frage: gib es keine andere Möglichkeit die Lösung/das Ergebnis (xml) auf dem Leufwerk automatisch zu speichern?

Alternativ kannst du noch mit MS Access oder Excel was basteln, damit du per VBA deine Abfrage startest und diese dann als XML exportiert werden kann. Das ist aber dann nicht automatisch, sondern auf knopfdruck.

Die Bessere und scheinbar die einzige Lösung die ich zumindest sehe, wäre ein SSIS Job der Zeitgesteuert läuft und dir deine xml Exportiert.
 
Zuletzt bearbeitet:
Zurück
Oben