Neu Per Batch erstellte Backup lässt sich nicht mehr einspielen

Sven83

Gut bekanntes Mitglied
26. Februar 2017
133
8
Hallo Leute,

ich habe mir am Anfang, als ich angefangen habe mit der JTL zu arbeiten eine Batch Datei geschrieben, damit der PC automatisch ein Backup laufen lässt. Ich habe dies anfangs getestet und konnte ohne Probleme meine Backup Dateien zurückspielen. Bisher habe ich es nicht gebraucht und wollte heute ein Backup auf eine Testumgebung spielen...und es geht nicht. Ich habe ein paar Tage zurück probiert, gehen alle nicht. Ich hatte es damals getestet und es funktionierte einwandfrei. Was hat sich geändert ? Gibt es von JTL eine Änderung ?

Hier die Batch:
@echo off
osql.exe -S localhost\JTLWAWI -U sa -P xxxxxxx -Q "BACKUP DATABASE eazybusiness TO DISK = 'E:\Backup\eazy\%date% %time:~0,2%-%time:~3,2%-%time:~6,2%.bak'"

Wenn ich vom Server aus der Datenbankverwaltung von JTL ein Backup ziehe, kann ich es ohne Probleme auf die Testumgebung spielen.

Fehlermeldung ist wie folgt:
"Die Medienfamilie auf Medium D:\blabla ist ungültig. SQL Server kann diese Medienfamilie nicht verarbeiten.
VERIFY DATABASE wird fehlerbedingt beendet."

Die Dateien von der Batch und die aus der Datenbankverwaltung sind von der Dateigröße identisch.

Weis jemand Rat ?
 

mustermann

Gut bekanntes Mitglied
17. September 2015
217
12
Kurze Antwort: alles richtig, vorausgesetzt, die Pfade stimmen.

Zum besseren Verständnis meinerseits: Wenn du jetzt ein Backup der produktiv genutzten Datenbank aus der JTL-Datenbankverwaltung erstellst, kannst du mit dieser Datei die Datenbank im Testsystem herstellen. Und wenn du jetzt stattdessen mit Hilfe der Batchdatei manuell ein Backup der produktiv genutzten Datenbank erstellst, kannst du die so erzeugte Backup-Datei nicht zur Wiederherstellung verwenden?

Ich würde zwar die Batch-Datei mindestens um DBCC CHECKDB und RESTORE VERIFYONLY erweitern, dazu gelegentlich ein Restore auch tatsächlich durchführen, aber dazu später.
 
Zuletzt bearbeitet:

Sven83

Gut bekanntes Mitglied
26. Februar 2017
133
8
Zum besseren Verständnis meinerseits: Wenn du jetzt ein Backup der produktiv genutzten Datenbank aus der JTL-Datenbankverwaltung erstellst, kannst du mit dieser Datei die Datenbank im Testsystem herstellen. Und wenn du jetzt stattdessen mit Hilfe der Batchdatei manuell ein Backup der produktiv genutzten Datenbank erstellst, kannst du die so erzeugte Backup-Datei nicht zur Wiederherstellung verwenden?

Ja, genau. Die Batch wird jeden morgen gestartet. Ich habe sie eben manuell gestartet und danach auf der JTL Datenbankverwaltung. Die aus der Verwaltung funzt, die aus der Batch nicht. Dateigröße ist identisch.

Was meinst du mit DBCC CHECKDB und RESTORE VERIFYONLY ?
 

mustermann

Gut bekanntes Mitglied
17. September 2015
217
12
Wir sollten erstmal klären, wo das Problem ist. Denn letztendlich tut die Backup-Routine der JTL-Datenbankverwaltung nichts anderes. Ich muss daher leider weiter blöde Fragen stellen.
Die Batch-Datei wird auf dem selben Rechner ausgeführt, auf dem du auch die JTL-Datenbankverwaltung ausgeführt hast. Richtig?
Oder ist sowieso alles lokal auf einem einzigen Rechner?

Edit: Magst du diese mal probieren?
Code:
osql.exe -S localhost\JTLWAWI -U sa -P xxxxxxx -Q "DBCC CHECKDB('eazybusiness')" -o "DBCHECKLog.txt"
osql.exe -S localhost\JTLWAWI -U sa -P xxxxxxx -Q "BACKUP DATABASE eazybusiness TO DISK = 'eazybusiness.bak'" -o "BackupLog.txt"
osql.exe -S localhost\JTLWAWI -U sa -P xxxxxxx -Q "RESTORE VERIFYONLY FROM DISK = 'eazybusiness.bak'" -o "VERIFYLog.txt"
Sicherungspfad ist hier das Standardverzeichnis des SQL-Servers, also etwa hier: "C:\Program Files\Microsoft SQL Server\MSSQL13.JTLWAWI\MSSQL\Backup"

Dein Problem klingt für mich nach Versionsunterschied, nach deiner Beschreibung ist das aber auszuschließen.
 
Zuletzt bearbeitet:

Sven83

Gut bekanntes Mitglied
26. Februar 2017
133
8
Es gibt doch keine blöden Fragen...ausserdem bin ich sehr sehr froh, dass mir hier geholfen wird :)

Die Batchdatei habe ich auf meinem "Server", einem Intel NUC unterm Schreibtisch ausgeführt. Die Testumgebung läuft lokal auf meinem Notebook.

Ich übernehme deinen Code morgen früh und versuche es mal damit. Versionsunterschied habe ich auch schon dran gedacht, aber es ist meines Wissens auf beiden die selbe JTL Version drauf. Und wenn nicht, hätte ich das Backup aus der JTL-Verwaltung ja auch nicht nutzen können, das ging aber.
 

Johannes Jorde

Moderator
Mitarbeiter
1. Februar 2012
70
11
Hückelhoven
Hallo Sven83,

die Fehlermeldung "Die Medienfamilie auf Medium..." ist wie von mustermann bereits geschrieben ein Versionsunterschiedproblem. Sprich der SQL Server, in welchem das Backup wiederhergestellt werden soll, hat nicht die gleiche SQL Server Version wie die vom Live-System. Was zu prüfen ist, ob auf dem zweiten Rechner ebenfalls alle Windows Updates gefahren wurden. Auch ein Servicepackunterschied kann zu der genannten Fehlermeldung führen. Ob wenigstens die gleiche SQL Server Version im Einsatz ist, kannst Du unter den "lokalen Diensten" prüfen. Dort einfach einen Doppelklick auf "SQL Server (JTLWAWI)" (wenn nach Anleitung installiert) machen und den Pfad vergleichen:
https://sqlserverbuilds.blogspot.de/#sql2016
C:\Programme\Microsoft SQL Server\MSSQL13 => SQL Server 2016
C:\Programme\Microsoft SQL Server\MSSQL12 => SQL Server 2014
C:\Programme\Microsoft SQL Server\MSSQL11 => SQL Server 2012
C:\Programme\Microsoft SQL Server\MSSQL10.5 => SQL Server 2008 R2

Gruß
Johannes
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
... wobei dei Version des SQL Servers in die das Backup eingespielt werden soll, natürlich nicht "gleich", sondern "gleich oder höher" sein muß... ;)
 

Sven83

Gut bekanntes Mitglied
26. Februar 2017
133
8
Ich habe die Verzeichnisse verglichen, auf Server sowie auf meinem Notebook ist SQL 12 (Ordner MSSQL12.JTLWAWI).
Wenn es an einem unterschied der Versionen liegen würde, würde das Backup aus der JTL Verwaltung auch nicht funktionieren oder ?

Ich bringe gleich mal die JTL auf Notebook und Server auf die aktuelle Version, wollte ich eh, bevor wir in den live Betrieb gehen.
Dann werde ich meine Backup Batch mit dem oberen Code von mustermann versehen, Kannst du mir bitte einmal sagen, welcher Befehl was tut ? Ich weis immer gerne, was da vor sich geht :)

Und vielen Dank für eure Unterstützung !
 

mustermann

Gut bekanntes Mitglied
17. September 2015
217
12
Wenn es an einem unterschied der Versionen liegen würde, würde das Backup aus der JTL Verwaltung auch nicht funktionieren oder ?
Genau, das macht es so verwunderlich und mich ratlos.
Dann werde ich meine Backup Batch mit dem oberen Code von mustermann versehen, Kannst du mir bitte einmal sagen, welcher Befehl was tut ? Ich weis immer gerne, was da vor sich geht
Davon muss ich abraten. Ich glaube, du bist mit einem tool wie SQLBackupandftp besser bedient. Eine solche Empfehlung habe ich noch nie gegeben, denn ich kenne es nicht, und halte immer wacker die SQLCMD-Fahne hoch, aber man muss schon wissen, was man damit tut. Zumal der o.g. Schnipsel nur ein Ausschnitt ist, keine fertige Lösung.

Aber bitte: Das Programm osql wird in der Datei dreimal nacheinander ausgeführt.
1. DBCC CHECKDB überprüft grob die Datenbankintegrität und speichert ein Logfile im Standardverzeichnis, hier etwa: c:\users\USERNAME\
2. BACKUP DATABASE ist dir bekannt, die Datei wird im Standardverzeichnis des SQL-Servers, hier etwa "C:\Program Files\Microsoft SQL Server\MSSQL13.JTLWAWI\MSSQL\Backup", gespeichert, dazu ein logfile im o.g. Benutzerverzeichnis.
3. RESTORE VERIFYONLY simuliert eine Wiederherstellung und hinterlässt ebenfalls eine Logdatei im o.g. Benutzerverzeichnis.

Es sind keinerlei Optionen gesetzt und werden nur Standardverzeichnisse genutzt. Ob du für diesen Fall osql oder sqlcmd benutzt, macht keinen Unterschied.

https://msdn.microsoft.com/de-de/library/ms188796(v=sql.120).aspx
https://docs.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql

Egal, auf welchem Wege du ein Backup erstellst, ob eine Wiederherstellung klappt weißt du sicher nur im realen Wiederherstellungsfalle. Darum wird der verantwortungsvolle Admin regelmäßig reale Datenbankwiederherstellungen durchführen. Simulationen geben keine 100%ige Sicherheit.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Amakando

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Da muß ich @mustermann Recht geben und noch eins weiter gehen, denn mit DOS Batches sollte man nur Dinge tun, die man anders nicht zustande bekommt ...

Sowohl SQLBackupAndFTP wie auch SQLBackupMaster gibt es aber sogar in Free Versionen, die 100x mächtiger sind, als alles, was Du selbst mit einer DOS Batch zustande bringen kannst - und beide benutzen unter der Haube osql.exe, sind also genauso sicher und "nativ", wie Deine Batch-Datei.

Beide erlauben Dinge wie die Ausführung von SQL Code vor oder nach dem Backup, z.B. ein "DBCC CHECKDB ('eazybusiness') WITH NO_INFOMSGS, ALL_ERRORMSGS", beide haben fertige Optionen für "RESTORE VERIFYONLY", beide erlauben flexibles Scheduling, automatische Verwaltung von Serien, File/Netzwerk/Cloud Ziele, Verschlüsselung, und so weiter und so fort ...

Ich habe früher auch mit Batches gearbeitet und die waren gemessen an der Behäbigkeit von DOS Batches sogar ganz schön durchgepfiffen, aber als ich gesehen habe, wie viel einfacher ich das alles mit diesen Tools bekommen kann, habe ich meine Batches SOFORT eingestampft und es nie bereut!
 

mustermann

Gut bekanntes Mitglied
17. September 2015
217
12
@gutberle Hier muss ich ganz klar widersprechen, mächtiger und flexibler als auf der Kommandozeile wird es nicht. Du musst allerdings wissen, was du tust. Vor dem Wissen steht das Lernen.
Ob SQLBackupusw. osql nutzt, konnte ich bisher nicht sicher in Erfahrung bringen und denke eher, dass sqlcmd im Spiel ist, wäre logisch. Quasi eine GUI für sqlcmd. Der Hersteller hält sich hier bedeckt und möchte eher den Anschein erwecken, es wäre seine Erfindung.
Naja, das klärt immer noch nicht Svens Problem...
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
@mustermann - Genau und das ist auch der Punkt. Wenn man mit den Tools, die für Nicht-IT Leute mit 1e38%iger Sicherheit die bessere Wahl sind, die eigenen Backup-Bedürfnisse nicht mehr befriedigt bekommt und die SQL Backup Optionen im Schlaf und von links nach rechts runterzitieren kann, DANN, ja DANN hat man etwas auf der Kommandozeile zu suchen, sonst hat man da nichts verloren! - Und ehrlich gesagt habe ich hier im Forum noch nie auch nur annähernd etwas gelesen, wo ich gedacht habe, da schau her, das macht ja 100% Sinn und geht ja nur mit der Kommandozeile, bin ich aber platt! - Noch NIE!
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Die Fehlermeldung aus Post #1 lautet doch "VERIFY DATABASE wird fehlerbedingt beendet". - Ich weiß nicht, was es da noch zu interpretieren oder zu vermuten gibt? Das Datenbank-Backup ist korrupt ... :confused:
 

mustermann

Gut bekanntes Mitglied
17. September 2015
217
12
Und hast du auch eine Vermutung, wie es dazu kommt, obwohl er alles richtig macht (nach seiner Beschreibung)? Die Datenbank ist schließlich OK.
 

Sven83

Gut bekanntes Mitglied
26. Februar 2017
133
8
Ich habe am Wochenende noch ein wenig herumgespielt und JTL Wawi auf allen PC's auf die aktuelle Version gebracht. Mir ist am Wochenende dann etwas komisches passiert. Mir ist, ich glaube beim Update der JTL WaWi auf meiner Testumgebung mein PC aus einem Grund, der hier erstmal nix mit zu tun hat abgestürzt. Ich habe beim erneuten Starten dann eine Meldung bekommen von JTL, ich solle ein Backup einspielen. Das Fenster war anders, als das aus der JTL Datenbankverwaltung. Ich konnte das Backup, welches die Batch erstellt hatte ohne Probleme einspielen, keine Fehlermeldung, JTL lief danach. Ich habe dann nochmals die Datenbankverwaltung geöffnet und habe versucht das Backup darüber einzuspielen, wieder die selbe Fehlermeldung wie sie oben steht. ...die selbe Backup Datei !

Eigentlich widerstrebt es mir, eine extra Software zu installieren, da es wieder eine Fehlerquelle mehr ist, wieder etwas was geupdatet werden muss, wieder etwas, was veralten kann und bei einem Windows Update plötzlich nicht mehr läuft...trotzdem habe ich mir jetzt diesen SQLBackupMaster installiert. Ich habe darüber ein Backup gezogen und konnte es einspielen. Es ärgert mich aber schon, da ich eigentlich gerne die schlanke Batch Lösung nutzen wollte.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
@Sven83 - Zu Deinem ersten Punkt mit dem Absturz und dass JTL Wawi dann beim Neustart plötzlich über ein anderes Fenster ein Backup für ein Restore anfordert, kann ich überhaupt nichts sagen, denn das höre ich zum ersten Mal. Dazu kann sich höchstens jemand von JTL qualifiziert äußern.

Und vielleicht ist der Umstand, dass Du darüber ein Backup einspielen konntest, bei dem die Datenbankverwaltung den Sprung verweigert hatte, ein gutes Zeichen, vielleicht aber auch ein schlechtes Zeichen. Ersteres für den Fall, dass die DB Verwaltung ~eventuell~ einen Bug hat, den Du hiermit aufgedeckt hast und letzteres für den Fall, dass die Routine, die da "hochgepoppt" ist, ~eventuell~ ein Überbleibsel/Urgestein aus alten Zeiten sein könnte, dass die Datenbankkonsistenz nicht so rigoros prüft, wie es die DB Verwaltung tut, und Du jetzt eine inkonsistente Datenbank als Arbeitsgrundlage hast. - Auf jeden Fall könnte es sinnvoll sein, das betreffende Backup bei der Hand zu halten, falls jemand von JTL einen Blich werfen will.

Zum zweiten Punkt:

Datensicherheit
ist hier wichtig und nicht Schlankheit! Und wenn @mustermann mir oben gleich mehrmals widersprochen hat, dann ist sein Widerspruch ausschließlich dort gültig, wo sich die Frage stellt, ob ein Programm, dass die SQL Server eigenen Befehle unter der Haube für Backups benutzt, mehr aus dem SQL Server Backup System rausholen kann als man es von der Kommandozeile kann. Das kann kein Programm und dort und nur dort hat @mustermann recht.

ABER: Alles, was mit dem Backup Handling, mit der Bildung von kohährenten Backup-Serien und deren Verwaltung, Löschen von (zu) alten Backups, der Verteilung der Backups auf FTP/SFTP/FTPS Server, Azure, Dropbox, Box, dem Zippen, der Verschlüsselung, dem Scheduling, und soooo weiter und soooo fort zu tun hat, bist dann DU und nur DU zuständig und all das will in DOS Batchdateien programmiert werden.

Ich weiß ja nicht, wie viel Erfahrung Du damit hast und ob Du ein durchdachtes und sicheres (!!!!) Backup Programm aus der hirntoten Batch Sprache rausprügeln kannst, das auch noch so viel kann wie eines der genannten SQL Backup-Tools. Falls nicht, dann geht es Dir wie 100% aller anderen Leute inklusive meiner Wenigkeit, denn dort, wo DOS Batch endet, beginnt echtes Programmieren überhaupt und deshalb schreiben Leute dann Programme, die all das implementieren, was mit DOS Batches nicht, oder zumindest nicht in Deinem und schon gar nicht in meinem Leben geht.

Sicherlich, auch solche Programme können Bugs enthalten und tun das auch. Und ja, da gibt es vielleicht auch Updates, die Kompatibilitäten brechen und Fehler einführen, darum geht es auch in DIESEM Forum! Und deshalb macht man es so, wie @mustermann viel weiter oben geschrieben hat und macht regelmäßig in einem Testsystem ein Restore von Backups aus dem Produktivsystem, sieht dadurch aber auch erst einmal nur, ob sIch das Backup sauber wieder zurückspielen läßt. Ob es auch alle Daten enthält und die Relationen erhalten geblieben sind, tja um das zu sehen, müsstest Du Dich ganze Abende oder sogar Wochen hinsetzen und alles von Hand checken.

An dieser Stelle ist leider Vertrauen in die benutzte Lösung angesagt und deshalb ist es auch gut zu wissen, dass sowohl SQLBackupMaster wie auch SQLBackupAndFTP hier nicht einfach nur blind/blöd eine Verbindung zum SQL Server aufbauen und dann "Daten saugen", sondern dass sie SQLServer selbst benutzen, damit der für sie ein Backup macht. Und nein, die beiden benutzen hier weder osql.exe noch sqlcmd.exe, sondern den VDI Mechanismus von SQL Server. Warum ich das weiß und wie ich das getestet habe, ist hier egal, das würde definitiv zu weit führen, aber übrigens, ein schneller Check zeigt, dass die Wawi Datenbankverwaltung es ganz ähnlich macht ...

Fazit: Gut, dass Du Dich für die Datensicherheit entschieden hast, willkommen an Bord!
 
  • Gefällt mir
Reaktionen: Amakando und Sven83

Sven83

Gut bekanntes Mitglied
26. Februar 2017
133
8
Vielen Dank für deine sehr ausführliche Antwort.
SQLBackupMaster funktioniert, tut jeden morgen seinen Dienst. Er packt mir die Sicherung auf einen NAS sowie auf eine zweite, verbaute HD im Server.

Ich muss mal ein Lob und ein großes Dankeschön aussprechen für alle, die sich meinem Thema angenommen haben und versucht haben Licht ins Dunkle zu bringen. DANKE ! Tolle Community und danke das ich dabei bin :)
 
  • Gefällt mir
Reaktionen: Amakando
Ähnliche Themen
Titel Forum Antworten Datum
Neu shopapotheke per Anbindung eBay-Anbindung - Fehler und Bugs 1
Neu Umlagerung per Ameisen-Import JTL-Wawi - Fehler und Bugs 1
Neu In einen Portlet-Container im Frontend per Ajax Datennachladen (weitere anzeigen) Technische Fragen zu Plugins und Templates 1
Neu eBay Plus Angebote per Ameise steuerbar ? Eigene Übersichten in der JTL-Wawi 6
Neu Zugang zu Kategorien nur per Kennworteingabe Plugins für JTL-Shop 3
Neu Eigene Felder (Kunde) in csv-Datei per Ausgabe (Auftrag oder Lieferschein) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Lieferadresse / Rechnungsadresse im Auftrag per Doppelklick wählbar machen JTL-Wawi - Ideen, Lob und Kritik 0
Datenbank-Abfrage per SQL nach Lagermenge pro Artikel & Warenbereich (WMSLager) JTL-Wawi 1.8 1
Neu Lieferantenbestellung als CSV mit selbst festgelegten Spalten per Mail senden Arbeitsabläufe in JTL-Wawi 1
Neu Benachrichtigung per Workflow bei Wareneingang User helfen Usern - Fragen zu JTL-Wawi 24
Neu Weiterleitungen direkt per Datenbank einfügen aufgrund Größe bzw. Anzahl? Betrieb / Pflege von JTL-Shop 9
Gelöst Per Workflow im Servicedesk eine Mail versenden. Gelöste Themen in diesem Bereich 4
Variationen per Ameise umbenennen JTL-Wawi 1.8 1
Workflow Auftraqspositionen per Email an Kunden senden JTL-Wawi 1.7 3
Neu Ist es möglich per Ameise Kunden zu löschen? Arbeitsabläufe in JTL-Wawi 2
Neu LS-Pos Kundenrechnung per Email Fragen rund um LS-POS 1
Neu Warenkorb per Link teilen Allgemeine Fragen zu JTL-Shop 6
Ausgabe per E-Mail geht plötzlich nicht mehr, Testmail aus Wawi aber schon JTL-Wawi 1.6 22
Beantwortet Kunde von Firma per Workflow setzen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Datenbankebene per SQL löschen Eigene Übersichten in der JTL-Wawi 6
Neu Consent Status per Smarty Var abfragen Technische Fragen zu Plugins und Templates 2
Nur noch sporadischer Versand per Mail von Rechnungen, Lieferscheinen und Mahnungen nach Update auf Version 1.8. JTL-Wawi 1.8 0
Neu Kinderartikel per Ameise vom Vater lösen Arbeitsabläufe in JTL-Wawi 6
Neu Probleme bei Aufgabenplaner (Export-Manger) per Cronjob JTL-Shop - Fehler und Bugs 1
Neu EK-Preise per Workflow in Lieferantenbestellung einfügen? User helfen Usern - Fragen zu JTL-Wawi 0
Neu per Workflow: WhatsApp oder ähnliches senden User helfen Usern - Fragen zu JTL-Wawi 0
Preise per Artikel Funktionsattribut bei einzelnen Artikeln ausblenden Einrichtung JTL-Shop5 0
Neu Vorschlag: Per Workflow Tickets erstellen Servicedesk (Beta) 1
Label per Import bedienen JTL-Wawi 1.8 0
Neu Artikeländerung per Artikelnummer mit Wildcard? JTL-Ameise - Ideen, Lob und Kritik 1
Neu Ameise Import manuell ausgeführt funktioniert, der gleiche Import über Batch Planung gestartet hat Fehler JTL-Ameise - Fehler und Bugs 2
Neu Neu erstellte Kategorien werden nicht mehr im Megamenue & Kategoriebaum angezeigt Betrieb / Pflege von JTL-Shop 7
Neu Übertrag Daten in eine neu erstellte JTL Wawi JTL-Wawi 1.7 1

Ähnliche Themen