SQL Variable mit Batch benutzen?
Hi
ich habe folgendes Problem. Ich muss eine Sicherung einer Datenbank (es gibt immer nur eine) von einer Istance (es gibt immer nur eine) und einem SQL Server (es gibt immer nur einen) deren Namen ich nicht kenne (die User nenne das Zeug immer anders).
Habe bisher das zusammen bekommen aber bei der Datenbank komm ich nicht mehr weiter. Hat da jemand eine zündende Idee?
ich habe folgendes Problem. Ich muss eine Sicherung einer Datenbank (es gibt immer nur eine) von einer Istance (es gibt immer nur eine) und einem SQL Server (es gibt immer nur einen) deren Namen ich nicht kenne (die User nenne das Zeug immer anders).
Habe bisher das zusammen bekommen aber bei der Datenbank komm ich nicht mehr weiter. Hat da jemand eine zündende Idee?
::SQL Server
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\Machines" /v OriginalMachineName') DO SET SQLSERVER=%%B
ECHO %SQLSERVER%
::SQL Instace
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server" /v InstalledInstances') DO SET SQLInstance=%%B
ECHO %SQLInstance%
sqlcmd -Q "BACKUP DATABASE Datenbankname TO DISK='C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.bak' WITH INIT" -S %SQLSERVER%\%SQLInstance%
IF NOT EXIST C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.bak goto :SQLFehler
del M:\System\SQLSicherung05.bak /Q
move M:\System\SQLSicherung04.bak M:\System\SQLSicherung05.bak
move M:\System\SQLSicherung03.bak M:\System\SQLSicherung04.bak
move M:\System\SQLSicherung02.bak M:\System\SQLSicherung03.bak
move M:\System\SQLSicherung01.bak M:\System\SQLSicherung02.bak
move C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.bak M:\System\SQLSicherung01.bak
goto Exit
:SQLFehler
Echo SQLFehler
:exit
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 09.02.2011 um 18:41:55 Uhr
Codeformatierung.
Content-ID: 160476
Url: https://administrator.de/forum/sql-variable-mit-batch-benutzen-160476.html
Ausgedruckt am: 23.12.2024 um 19:12 Uhr
5 Kommentare
Neuester Kommentar
Hi,
es gibt eine undokumentierte system stored procedure, die heißt sp_msforeachdb, damit kannst du ein Kommando auf alle Datenbanken absetzen.
Dann gibts noch eine osql.exe im Installationsverzeichnis, ich glaub unter binn, die kann eine Textdatei als SQL-Script ausführen. (osql /?)
Frag mich nicht nach Syntaxen, ich muss auch immer googeln.
Dann kenn ich noch ein Tool namens Expressmaint, ist auch googlebar... Schaus dir mal an
Gruß,
MiniStrator
es gibt eine undokumentierte system stored procedure, die heißt sp_msforeachdb, damit kannst du ein Kommando auf alle Datenbanken absetzen.
Dann gibts noch eine osql.exe im Installationsverzeichnis, ich glaub unter binn, die kann eine Textdatei als SQL-Script ausführen. (osql /?)
Frag mich nicht nach Syntaxen, ich muss auch immer googeln.
Dann kenn ich noch ein Tool namens Expressmaint, ist auch googlebar... Schaus dir mal an
Gruß,
MiniStrator
Hi,
meinst du die erste Datenbank jeder Instanz oder die Datenbanken der ersten Instanz? Mach doch einen neuen Fred auf, mit deinem Ist-Zustand und der Anforderung 'mehrere Instanzen'
Das Problem liegt hier dabei, dass dein Codeblock 'SQLInstance' einen registrykey ausließt in dem Zeilenumbrüche vorhanden sind. Und diese werden vom Batch als \0 zurückgegeben. Ob die der 'delims' irgendwie kann weiß ich nicht.
Zumindest wirst du um das Ganze ne Schleife rumbasteln müssen.
Bei ner Frage nach eben diesem Problem kriegst du bestimmt ne Antwort von Bastla, Biber und/oder Konsorten...
Gruß
MiniStrator
meinst du die erste Datenbank jeder Instanz oder die Datenbanken der ersten Instanz? Mach doch einen neuen Fred auf, mit deinem Ist-Zustand und der Anforderung 'mehrere Instanzen'
Das Problem liegt hier dabei, dass dein Codeblock 'SQLInstance' einen registrykey ausließt in dem Zeilenumbrüche vorhanden sind. Und diese werden vom Batch als \0 zurückgegeben. Ob die der 'delims' irgendwie kann weiß ich nicht.
Zumindest wirst du um das Ganze ne Schleife rumbasteln müssen.
Bei ner Frage nach eben diesem Problem kriegst du bestimmt ne Antwort von Bastla, Biber und/oder Konsorten...
Gruß
MiniStrator
@0belixx
Hi,
auch du könntest in deinen Beiträgen die Formatierungen in den Beiträgen verwenden (Formatierungshilfe im Eingabefenster), das tut nicht weh und liest sich besser.
Gruß
Hi,
auch du könntest in deinen Beiträgen die Formatierungen in den Beiträgen verwenden (Formatierungshilfe im Eingabefenster), das tut nicht weh und liest sich besser.
ich muss den Eintrag nochmal aktivieren.
Dann musst du auch den gelöst/erledigt Haken wieder wegnehmen, sonst könnte es nämlich sein, dass du keine Antwort bekommst.Gruß