armins
Goto Top

SQL Version mittels Batch in txt speichern

habe lange gesucht leider keinen treffenden Beitrag gefunden.. falls es doch einen geben sollte bitte ich höflichst um entschuldigung.

folgendes problem

wie die Überschrift schon sagt möchte ich die Version des SQL auslesen und in eine txt speichern.

Habe folgendes schon mal probiert


 
@ECHO OFF
rem -------------------------------------------
rem Ermitteln der SQL Version
rem SQL2000 & 2005'  
set DBUSER=*
set DBPWD=*
set DB=*
osql -U%DBUSER% -P%DBPWD% -d%DB% -Q"SELECT  SERVERPROPERTY ('edition'), SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel')" > version.txt  

es funktioniert soweit alles nur habe ich in der Textdatei ~1000 Zeilen und zu beginn leerstellen dann irgendwann mehrere ---- als Zeilen dann Version, wieder leerstellen dann ServicePack Version usw.

hat einer eine Idee warum das so komisch in die TXT geschrieben wird und wie man das formatieren oder anders lösen könnte?

Content-Key: 121030

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

Printed on: April 27, 2024 at 00:04 o'clock

Member: armins
armins Jul 22, 2009 at 09:11:09 (UTC)
Goto Top
naja hab mal ne Lösung gefunden

falls einer was besseres weiß wäre ich natürlich sehr dankbar


hier meine Lösung:

sqlcmd -W 
osql -h-1 -w10000 

habe erstmal sql2005 von sql2000 getrennt
sqlcmd für 2005
osql für 2000

sqlcmd:
erklärung für " -W remove trailing spaces" damit habe ich erreicht dass die leerstellen und die "------" entfernt wurden

osql:
erklärung für -h-1 -w10000 damit habe ich erreicht dass keine "header" ausgegeben werden die als leerstellen und "----" dargestellt wurden und zudem mit -w habe ich die spaltenbreite so hoch gesetzt dass die zwischenleerzeichen praktisch wegfallen.

jetzt werd ich mir noch ne fehlerbehandlung basteln müssen aber es funkt erstmal

vielleicht kann es ja jemand mal gebrauchen und wie gesagt für elegantere lösungen bin ich immer offen ;)
Mitglied: 59581
59581 Jul 22, 2009 at 09:44:02 (UTC)
Goto Top
Hallo,

das kannst du auch mit SQLCMD ereichen

dazu musst du noch diese schalter verwenden

-h -1 und
-W

sqlcmd -U%DBUSER% -P%DBPWD% -d%DB% -h -1 -W -Q "SELECT SERVERPROPERTY ('edition'), SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel');" > version.txt

wenn du aber bei osql bleiben willst dennn
verwende auch hier die -h -1 und -w für die breite der spalte
Member: armins
armins Jul 22, 2009 at 11:40:24 (UTC)
Goto Top
hallo Amadeus

danke für die Antwort aber soweit war ich ja schon, hab ja erklärung dazu gepostet zu osql und sqlcmd.

bin natürlich immer noch für verbesserungen offen