Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 09.02.2011 um 18:41:55 Uhr
Codeformatierung.
GELÖST

SQL Variable mit Batch benutzen?

Frage Entwicklung Batch & Shell

Mitglied: 0belixx

0belixx (Level 1) - Jetzt verbinden

09.02.2011, aktualisiert 18:41 Uhr, 6396 Aufrufe, 5 Kommentare

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?
01.
::SQL Server 
02.
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 
03.
ECHO %SQLSERVER% 
04.
 
05.
::SQL Instace 
06.
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server" /v InstalledInstances') DO SET SQLInstance=%%B 
07.
ECHO %SQLInstance% 
08.
 
09.
 
10.
 
11.
 
12.
sqlcmd -Q "BACKUP DATABASE Datenbankname TO DISK='C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.bak' WITH INIT" -S %SQLSERVER%\%SQLInstance% 
13.
IF NOT EXIST C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.bak goto :SQLFehler 
14.
del M:\System\SQLSicherung05.bak /Q 
15.
move M:\System\SQLSicherung04.bak M:\System\SQLSicherung05.bak 
16.
move M:\System\SQLSicherung03.bak M:\System\SQLSicherung04.bak 
17.
move M:\System\SQLSicherung02.bak M:\System\SQLSicherung03.bak 
18.
move M:\System\SQLSicherung01.bak M:\System\SQLSicherung02.bak 
19.
move C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.bak M:\System\SQLSicherung01.bak 
20.
 
21.
goto Exit 
22.
 
23.
:SQLFehler 
24.
Echo SQLFehler 
25.
 
26.
:exit
Mitglied: MiniStrator
09.02.2011 um 21:58 Uhr
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
Bitte warten ..
Mitglied: 0belixx
14.02.2011 um 10:10 Uhr
Hi MiniStrator

danke für deine zündende Idee, hab das jetzt so gelöst:

::SQL Server
@ECHO OFF
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 "EXEC sp_MSForEachDB 'IF DB_NAME((SELECT dbid FROM sysdatabases WHERE [Name]= ''?'')) NOT IN (''tempdb'',''master'',''model'',''msdb'') BACKUP DATABASE [?] TO DISK = N''C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\?.bak'' WITH NOFORMAT, NOINIT, NAME = N''?-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD'" -S %SQLSERVER%
M:\System\DS_SQL\7z.exe a C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.zip C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\
IF NOT EXIST C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.zip goto :SQLFehler
del M:\System\SQLSicherung05.bak /Q
move M:\System\DS_SQL\SQLSicherung04.zip M:\System\DS_SQL\SQLSicherung05.zip
move M:\System\DS_SQL\SQLSicherung03.zip M:\System\DS_SQL\SQLSicherung04.zip
move M:\System\DS_SQL\SQLSicherung02.zip M:\System\DS_SQL\SQLSicherung03.zip
move M:\System\DS_SQL\SQLSicherung01.zip M:\System\DS_SQL\SQLSicherung02.zip
move C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\SQLBackup.zip M:\System\DS_SQL\SQLSicherung01.zip
del C:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\Backup\*.* /Q

goto Exit

:SQLFehler
Echo SQLFehler

:exit
Bitte warten ..
Mitglied: 0belixx
14.04.2011 um 13:52 Uhr
Hallo Leute,

ich muss den Eintrag nochmal aktivieren.

jetzt habe ich nehmlich den Fall das ich eine Instance ansprechen muss. Da funktioniert das Script aber nicht es wird immer nur die erste Datenbank gesichert.

Kann jemand helfen.

Beste Grüsse.
0belixx
Bitte warten ..
Mitglied: MiniStrator
15.04.2011 um 00:07 Uhr
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
Bitte warten ..
Mitglied: 99045
15.04.2011 um 00:17 Uhr
@0belixx
Hi,

auch du könntest in deinen Beiträgen die Codeformatierung 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ß
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Datenbanken
MS-SQL-Server + T-SQL+Batch (4)

Frage von kallewirsch zum Thema Datenbanken ...

Batch & Shell
gelöst Batch Variable setzten mit Leerzeichen (3)

Frage von Marlon1 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...