arafat
Goto Top

Täglicher Export einer View aus MS SQL 2008 in Excel oder CSV

Hallo Forum,

ich suche gerade nach einer Möglichkeit Daten aus einer View täglich zu exportieren.
Entweder in Excel oder csv.

Über das SQL Server Management Studio kann ich Daten über den Task exportieren, aber nicht automatisch.

Danke und Gruß Markus

Content-ID: 317419

Url: https://administrator.de/contentid/317419

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

it-frosch
it-frosch 11.10.2016 um 08:57:15 Uhr
Goto Top
Hallo Markus,

SQL Reporting Services ist hier das Strichwort.
Mit dem Report Builder kannst du einen einenfachen Report (zeige mir die View xy an) erstellen,
den du dann auf den SQL Reporting Services Server hochladen kannst.
Über Abonieren legt du die Exportfeatures (E-Mail / Windowsfreigabe) und das Format (CSV,XML,Excel, TIFF,Word, PDF)
sowie den Zeitplan dafür fest.

Ich weiß aber nicht ob du das mit der Express Edition schon bekommst.
Bei Standard ist es auf jeden Fall dabei.

Grüße vom it-frosch
em-pie
Lösung em-pie 11.10.2016 um 08:58:24 Uhr
Goto Top
Moin,

Die SQLCMD dürfte dein Freund und Helfer sein:
https://technet.microsoft.com/de-de/library/ms165702(v=sql.105).aspx

die in eine Batchfile untergebracht und du kannst einen scheduled Task damit erstellen.
Das Ergebniss musst du dann natürlich noch in eine CSV-File exportieren; sollte aber mit dem Parameter -o funktionieren

Verwende am besten aber einen SQL-User, der nur die View lesen darf, nicht das jemand die Datei mal findet, den User und das Password ausliest und dann eine Massenänderung in deiner DB vornimmt ;)

Gruß
em-pie
it-frosch
Lösung it-frosch 11.10.2016 um 09:03:03 Uhr
Goto Top
@em-pie

das ist natürlich noch viel einfacher. face-wink

grüße vom it-frosch
Arafat
Arafat 11.10.2016 um 11:17:43 Uhr
Goto Top
Hallo Zusammen,

die Instanz ist ein 2008 Standard.
Ein Reporting Services scheint aber nicht installiert zu sein, nur ein Konfigurations-Manager für Reporting Services.

Per sqlcmd wäre ja auch ausreichende.

Kann mir jemand eine Beispiel geben?
Wie ich einen Datenbankserver kontaktiere und eine xy View in eine csv umleite?

Danke und Gruß Markus
em-pie
Lösung em-pie 11.10.2016 aktualisiert um 11:39:42 Uhr
Goto Top
also eigentlich steht ja alles in dem von mir genannten Link... aber nun gut

Ich habe es wie folgt gemacht:

Die Datei c:\scripte\Query.sql beinhaltet mein SQL-Statement:
select * from [View]


Dann habe ich eine batch-File c:\scripte\execute_query.cmd:
sqlcmd.exe -S [SQLSERVER]\[SQL-INSTANCE] -i c:\scripte\Query.sql -o c:\scripte\result.csv -s ";"  


werden Benutzername und Kennwort erfordert, benötigst du noch die Parameter -U und -P:
sqlcmd.exe -S [SQLSERVER]\[SQL-INSTANCE] -U [User] -P [geheim] -i c:\scripte\Query.sql -o c:\scripte\result.csv -s ";"  

dass sollte es im Einfachen gewesen sein.


Nachtrag und oben korrigiert:
du solltest noch den Parameter -s (kleingeschrieben) verwenden, damit du beispielsweise deine Spalten mit einem Semikolon voneinander trennst.
Arafat
Arafat 11.10.2016 um 17:02:04 Uhr
Goto Top
Hallo em-pie,

ich habe schon Probleme mich mit dem Server zu Verbinden.

Local sollte doch reichen:

smsql -S localhost\MSSQLSERVER -U sa -P xxxxxx -i .... usw.

(habe auch schon .\MSSQLSERVER und SERVERNAME\MSSQLSERVER ausprobiert - die Instanz steht so im SQL Server Configuration Manager SQL Server (MSSQLSERVER) )

Ich bekomme aber immer folgendes in der Datei:

Result '0x57', Ebene '16', Status '1'
'SQL Server-Netzwerkschnittstellen: Die Verbindungszeichenfolge ist ungültig [87]. '
Sqlcmd: Fehler: Microsoft SQL Server Native Client 10.0 : Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. Weitere Informationen erhalten Sie in der SQL Server-Onlinedokumentation..
Sqlcmd: Fehler: Microsoft SQL Server Native Client 10.0 : Anmeldungstimeout abgelaufen.
Arafat
Arafat 11.10.2016 um 17:48:04 Uhr
Goto Top
ok ... das Verbindungsproblem ist gelöst.
Bei Standard Instanzen muss die Instanz nicht mitgegeben werden, es reicht der Servername.

Jetzt steh ich aber wie der Ochse vorm Berg und Frag mich, wie ich in der Select Anweisung die Datenbank mitgebe.

select * from [datenbank].[View] geht nicht.

Vielleicht ist Heute auch einfach schon zuspät ....
em-pie
Lösung em-pie 12.10.2016 um 08:54:08 Uhr
Goto Top
Moin,

wenn du das mit der zusätzliche Inputfile erledigst, dann kannst du die DB auswählen, indem du vor deinem Statement noch Use [Datenbank] setzt:

USE [Datenbank]
Select * from [View] where .....
Arafat
Arafat 12.10.2016 um 08:56:46 Uhr
Goto Top
oder ein [-d Datenbankname] in der sqlcmd Zeile.

Danke Euch! Ihr habt mir sehr geholfen.

Gruß Markus