Top-Themen

Aktuelle Themen (A bis Z)

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
GELÖST

SQLCMD benutzt in einer Batch die falsche SQL-Instanz

Frage Entwicklung Datenbanken

Mitglied: Seelbreaker

Seelbreaker (Level 1) - Jetzt verbinden

09.06.2009, aktualisiert 15:54 Uhr, 4483 Aufrufe, 4 Kommentare

Es wird eine Batch ausgeführt die mittels SQLCMD mehrere Datenbanken verteilt auf 2 Server und 2 Instanzen Datenbanken sichern soll:
Server 1 --> Instanz1 --> Datenbanken 1-5
Server 2 --> Instanz2 --> Datenbanken 6-16

Danach läuft noch Defragmentierungstask los, der ist aber auskommentiert, da erstmal die SQL Sicherung laufen soll.

Die Batch wird von Server 1 ausgeführt mit als Domänenadmin.

Die von mir geposteten Batches etc. lassen sich unter Notepad++ besser lesen :P

Mein Problem ist nun, dass in der Batch die Datenbanken vom 1. Server und der 1. Instanz ordnungsgemäß gesichert werden.

Sobald der Task für Server2--> Instanz2--> DB 6-16 losläuft sucht der aber komischerweise auf dem 1. Server und der 1. Instanz...

Hier mal meine Batch.

Daraufhin folgt ein Log von der 1. Sicherung die erfolgreich durchläuft und die Übergabedatei für SQLCMD. Danach Log und Übergabedatei für SQLCMD der 2. Sicherung bei der mein Problem besteht.

01.
@echo off 
02.
 
03.
REM Umgebungsvariablen festlegen 
04.
REM Server 
05.
SET S1=LXSRV3 
06.
SET S2=LXSRV2 
07.
SET S3=LXDC1 
08.
 
09.
REM Instanzen 
10.
SET Instanz1=Instanz01 
11.
SET Instanz2=w4a 
12.
SET Instanz3= 
13.
SET Instanz4= 
14.
 
15.
REM Datenbanken 
16.
SET DB1=EHF_Test 
17.
SET DB2=eloam 
18.
SET DB3=blab 
19.
SET DB4=blub 
20.
SET DB5=blib 
21.
SET DB6=db_10it 
22.
SET DB7=db_zp_10it_banking 
23.
SET DB8=Northwind 
24.
SET DB9=pubs 
25.
SET DB10=Work 
26.
SET DB11=Workdef 
27.
SET DB13=WorkM001 
28.
SET DB14=WorkM002 
29.
SET DB15=WorkM003 
30.
SET DB16=WorkM004 
31.
SET DB17= 
32.
SET DB18= 
33.
SET DB19= 
34.
SET DB20= 
35.
 
36.
REM Sicherungspfade (wo die Backups und Logs hinkommen) 
37.
SET Sicherungspfad1=E:\sql-test\%Instanz1%\ 
38.
SET Sicherungspfad2=E:\sql-test\%Instanz2%\ 
39.
 
40.
REM Überprüfen auf das Vorhandensein für das Sicherungsverzeichnis für die Sicherung1 
41.
if exist %Sicherungspfad1% goto Sicherung1 
42.
mkdir %Sicherungspfad1% 
43.
 
44.
 
45.
 
46.
REM Sicherung aller Datenbanken auf Server 1, Instanz1 
47.
:Sicherung1 
48.
sqlcmd -e -s \S1\Instanz1 -i C:\sql_save\%Instanz1%\%DB1%.sql -o %Sicherungspfad1%%DB1%.txt 
49.
REM sqlcmd -e -s \S1\Instanz1 -i C:\sql_save\%Instanz1%\%DB2%.sql -o %Sicherungspfad1%%DB2%.txt 
50.
REM sqlcmd -e -s \S1\Instanz1 -i C:\sql_save\%Instanz1%\%DB3%.sql -o %Sicherungspfad1%%DB3%.txt 
51.
REM sqlcmd -e -s \S1\Instanz1 -i C:\sql_save\%Instanz1%\%DB4%.sql -o %Sicherungspfad1%%DB4%.txt 
52.
REM sqlcmd -e -s \S1\Instanz1 -i C:\sql_save\%Instanz1%\%DB5%.sql -o %Sicherungspfad1%%DB5%.txt 
53.
 
54.
 
55.
 
56.
REM Überprüfen auf das Vorhandensein für das Sicherungsverzeichnis für die Sicherung2 
57.
if exist %Sicherungspfad2% goto Sicherung2 
58.
mkdir %Sicherungspfad2% 
59.
 
60.
REM Sicherung aller Datenbanken auf Server 2, Instanz 2 
61.
:Sicherung2 
62.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB6%.sql -o %Sicherungspfad2%%DB6%.txt 
63.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB7%.sql -o %Sicherungspfad2%%DB7%.txt 
64.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB8%.sql -o %Sicherungspfad2%%DB8%.txt 
65.
sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB9%.sql -o %Sicherungspfad2%%DB9%.txt 
66.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB10%.sql -o %Sicherungspfad2%%DB10%.txt 
67.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB11%.sql -o %Sicherungspfad2%%DB11%.txt 
68.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB12%.sql -o %Sicherungspfad2%%DB12%.txt 
69.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB13%.sql -o %Sicherungspfad2%%DB13%.txt 
70.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB14%.sql -o %Sicherungspfad2%%DB14%.txt 
71.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB15%.sql -o %Sicherungspfad2%%DB15%.txt 
72.
REM sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB16%.sql -o %Sicherungspfad2%%DB16%.txt 
73.
 
74.
 
75.
 
76.
 
77.
 
78.
REM "C:\Programme\Auslogics\AusLogics Disk Defrag\cdefrag -c -log:"C:\Dokumente und Einstellungen\All Users\Desktop\Defragmentierung.html"" 
79.
 
80.
pause

Log der 1. Sicherung --> sqlcmd -e -s \S1\Instanz1 -i C:\sql_save\%Instanz1%\%DB1%.sql -o %Sicherungspfad1%%DB1%.txt
01.
-- Deklarieren der Variablen 
02.
declare @database as varchar(100); 
03.
declare @pfad as varchar(100); 
04.
declare @Instanz as varchar(100); 
05.
 
06.
-- Name der zu sichernden Datenbank und Instanzen 
07.
set @database = N'EHF_Test'; 
08.
set @Instanz = N'Instanz01'; 
09.
 
10.
-- Pfad zusammenbasteln 
11.
select @pfad = 'E:\sql-test\' + @Instanz + '\' + @database  + '_Sicherung.bak'; 
12.
 
13.
-- Und jetzt das Backup 
14.
BACKUP DATABASE @database TO DISK = @pfad WITH FORMAT; 
15.
2936 Seiten wurden für die 'EHF_Test'-Datenbank, Datei 'EHF_Test_dat' für Datei 1, verarbeitet. 
16.
1 Seiten wurden für die 'EHF_Test'-Datenbank, Datei 'EHF_Test_log' für Datei 1, verarbeitet. 
17.
BACKUP DATABASE hat erfolgreich 2937 Seiten in 0.662 Sekunden verarbeitet (36.344 MB/s).
Übergabedatei der 1. Sicherung
01.
-- Deklarieren der Variablen 
02.
declare @database as varchar(100); 
03.
declare @pfad as varchar(100); 
04.
declare @Instanz as varchar(100); 
05.
 
06.
-- Name der zu sichernden Datenbank und Instanzen 
07.
set @database = N'EHF_Test'; 
08.
set @Instanz = N'Instanz01'; 
09.
 
10.
-- Pfad zusammenbasteln 
11.
select @pfad = 'E:\sql-test\' + @Instanz + '\' + @database  + '_Sicherung.bak'; 
12.
 
13.
-- Und jetzt das Backup 
14.
BACKUP DATABASE @database TO DISK = @pfad WITH FORMAT;

Log der 2. Sicherung --> sqlcmd -e -s \S2\Instanz2 -i C:\sql_save\%Instanz2%\%DB9%.sql -o %Sicherungspfad2%%DB9%.txt
01.
-- Deklarieren der Variablen 
02.
declare @database as varchar(100); 
03.
declare @pfad as varchar(100); 
04.
declare @Instanz as varchar(100); 
05.
 
06.
-- Name der zu sichernden Datenbank und Instanzen 
07.
set @database = N'pubs'; 
08.
set @Instanz = N'w4a'; 
09.
 
10.
-- Pfad zusammenbasteln 
11.
select @pfad = 'E:\sql-test\' + @Instanz + '\' + @database  + '_Sicherung.bak'; 
12.
 
13.
-- Und jetzt das Backup 
14.
BACKUP DATABASE @database TO DISK = @pfad WITH FORMAT; 
15.
Meldung '911', Ebene '16', Status '11', Server 'LXSRV3\INSTANZ01', Zeile 14 
16.
'In 'sysdatabases' wurde kein Eintrag für die 'pubs'-Datenbank gefunden. Es wurde kein Eintrag mit diesem Namen gefunden. Stellen Sie sicher, dass der Name richtig eingegeben wurde.' 
17.
Meldung '3013', Ebene '16', Status '1', Server 'LXSRV3\INSTANZ01', Zeile 14 
18.
'BACKUP DATABASE wird fehlerbedingt beendet.'
Übergabedatei der 2. Sicherung
01.
-- Deklarieren der Variablen 
02.
declare @database as varchar(100); 
03.
declare @pfad as varchar(100); 
04.
declare @Instanz as varchar(100); 
05.
 
06.
-- Name der zu sichernden Datenbank und Instanzen 
07.
set @database = N'pubs'; 
08.
set @Instanz = N'w4a'; 
09.
 
10.
-- Pfad zusammenbasteln 
11.
select @pfad = 'E:\sql-test\' + @Instanz + '\' + @database  + '_Sicherung.bak'; 
12.
 
13.
-- Und jetzt das Backup 
14.
BACKUP DATABASE @database TO DISK = @pfad WITH FORMAT;
Mitglied: Biber
09.06.2009 um 17:23 Uhr
Moin seelbreaker,

es ist beim Arbeiten mit M$-Tools oft ungemein hilfreich sich vorzustellen, wie wohl ein pickliger Redmonder Praktikant so ein Utilily wie SQLCMD zusammenschroten würde.

Dann kommt man/frau relativ schnell auf den Bolzen, dass sich ein Server-Wechsel via SQLCmd-Skript nur hinbekommen lässt, wenn Du zwischen den beiden Aufrufen ein explizites GO einfügst.


Frag nicht....

Grüße
Biber
Bitte warten ..
Mitglied: filippg
09.06.2009 um 19:24 Uhr
Hallo,

Die Komandozeilenoptionen bei sqlcmd sind Case-Sensitiv. Ein "-s" wird daher ignoriert. Auf Server 1 funktioniert es dann, da das Skript dort ausgeführt und die Standardinstanz verwendet wird.

Gruß

Filipp
Bitte warten ..
Mitglied: Biber
09.06.2009 um 19:50 Uhr
Moin filippg,

Na, dann versuche ich auch noch mal was Sinnvolles beizutragen

du kannst aber auch mit EINEM *.sql-Skript arbeiten und die Variablen direkt übergeben.
Dazu dieht der un- oder lau dokumentierte Parameter -v.


D.h statt diesem Geraffel:
01.
.... 
02.
set @database = N'pubs';  
03.
set @Instanz = N'w4a';  
04.
-- Pfad zusammenbasteln  
05.
select @pfad = 'E:\sql-test\' + @Instanz + '\' + @database  + '_Sicherung.bak';  
06.
BACKUP DATABASE @database TO DISK = @pfad WITH FORMAT;
..änderst Du die Syntax in dem SQL auf:

01.
BACKUP DATABASE $(database) TO DISK = $(pfad) WITH FORMAT;
...und übergibst die Variablen im SQLCmd.exe-Aufruf so:
01.
sqlcmd -e -S \S1\Instanz1 -i C:\sql_save\%Instanz1%\%DB1%.sql -v database-pubs pfad=E:\sql-test\Instanzxx -o %Sicherungspfad1%%DB1%.txt 
Grüße
Biber
Bitte warten ..
Mitglied: Seelbreaker
10.06.2009 um 09:50 Uhr
Zitat von filippg:
Hallo,

Die Komandozeilenoptionen bei sqlcmd sind Case-Sensitiv. Ein
"-s" wird daher ignoriert. Auf Server 1 funktioniert es
dann, da das Skript dort ausgeführt und die Standardinstanz
verwendet wird.

Gruß

Filipp


Oh man, das war es
Bitte warten ..
Ähnliche Inhalte
Windows Server
SQL: SQLCMD-Ausgabe als Variable
Frage von berlingerWindows Server2 Kommentare

Hallo Zusammen Ich bin auf der Suche nach einer schlauen Lösung und komme nicht weiter. Ich möchte gerne via ...

Datenbanken
SQL Express Datenbanken und Instanzen
Frage von crack24Datenbanken11 Kommentare

Hallo, ich habe eine Anfängerfrage zum Thema SQL Express 2012 Server. Eine Instanz kann mehrere Datenbanken beinhalten. Wie legt ...

Windows Server
Anmeldedaten SQL Instanzen SBS2011
Frage von takvorianWindows Server8 Kommentare

Hallo zusammen, war eben bei einem Kunden mit einem SBS2011 Server um ihm eine neue Backupsoftware ( Acronis ) ...

Datenbanken
SQL-Server: Wann Instanzen nutzen?
gelöst Frage von User1000Datenbanken11 Kommentare

Hallo! Eine vermutlich ganz einfache Frage für die anwesenden SQL-Experten: => Wann verwendet man eigene SQL-Instanzen? Sollte man für ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...