11193
Goto Top

Batchdatei zur Sicherung einer Access Db

Hallo,

ich habe folgendes Problem. Ich möchte eine Access DB die auf einem Server Laufwerk
liegt regelmäßig sichern. Mit der Datenbank arbeiten mehrere Arbeitsplätze. Nun soll
immer wenn ein Computer startet (einmal morgens) die Access Datenbank von dem
Serverlaufwerk als Kopie gezogen werden und dann lokal auf der Festplatte des
Arbeitsplatzes gespeichert werden. Die Sicherung sollte nur einmal am Tag gemacht
werden.

Wie geht das???

Content-Key: 8526

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

Printed on: April 25, 2024 at 23:04 o'clock

Member: LarsJakubowski
LarsJakubowski Mar 24, 2005 at 10:36:32 (UTC)
Goto Top
Hi,

Du könntest z.B. XCopy einsetzen.

Das Laufwerk sollte dabei eine normale und nicht administrative Freigabe sein.

Wenn Du XCopy aufrufst, dann siehst Du schon, was Du eintragen musst. Das ist easy.
Das schreibst Du nun in eine Batchdatei und lässt diese mit dem Taskplaner täglich ausführen.

So sollte es gehen!

Lars
Mitglied: 11193
11193 Mar 24, 2005 at 10:41:25 (UTC)
Goto Top
Die Access DB ist relativ groß (140 MB). Läuft der Kopiervorgang dann ohne
Probleme im Hintergrund ab?

Was meinst du mit:
Das Laufwerk sollte dabei eine normale und nicht administrative Freigabe sein. ?
Ist damit das ServerLaufwerk gemeint? Ich kann dort ohne Probleme drauf
zugreifen.
Member: leknilk0815
leknilk0815 Mar 24, 2005 at 10:44:30 (UTC)
Goto Top
Hi,
hierzu eine Batch zu stricken, sollte kein großes Problem sein. Aber:
soll es immer der gleiche PC sein, der den Job auslöst (vermutlich),
soll es passieren, wenn der Rechner startet oder erst beim Anmelden,
arbeitet dann schon jemand mit der DB (offene Files zu sichern, dürfte schwierig werden, bei Access weiß ich nicht, ob das möglich ist, keine Ahnung).

Beim Anmelden ist es einfach: einfach den copy- Befehl ins Login Script einbauen
Gruß - Toni
Mitglied: 11193
11193 Mar 24, 2005 at 10:47:58 (UTC)
Goto Top
Die Batchdatei sollte auf verschiedenen Rechnern liegen. Sinnvoll wäre die
Sicherung bei der Person, die den Rechner als erstes morgens startet. Wenn man
eine Prüfung einbauen könnte ob heute schon ein Backup gezogen worden ist
oder ob Access offen ist (dann nicht kopieren).
Member: LarsJakubowski
LarsJakubowski Mar 24, 2005 at 10:53:11 (UTC)
Goto Top
Mit administrative Freigaben sind z.B. c$ d$ etc. gemeint.
Normale Freigaben haben einen richtigen Laufwerksbuchstaben im Explorer.

Bei Access ist das alles ein wenig schwierig:
Wird der Kopiervorgang unterbrochen, kannst Du dir die DB locker schießen. Genauso wie bei Zugriffe durch User.

Wird die DB genutzt und soll währenddessen kopiert werden, kommt es zu Zugrifffsverletzungen innerhalb der DB.
Im schlimmsten Fall hast Du doppelte oder verlorene Einträge oder eine einfach kaputte Datenbank.

Es ist wichtig, das niemand auf die Datenbak zugreift, während sie kopiert wird!
Sonst, siehe oben!

Sinnvoll wäre eine richtige Datensicherung über Nacht, wo die datenbank auf ein externes Medium geschrieben wird.

Da die Datenbank noch recht klein ist mit 140 MB (Access kann 999MB verwalten), empfiehlt sich diese Lösung eher nicht!!


Lars
Member: leknilk0815
leknilk0815 Mar 24, 2005 at 10:56:35 (UTC)
Goto Top
dann ist es als task- Job auf dem Server am einfachsten.
Du läßt an einem bestimmten Zeitpunkt den Task starten, der führt eine batch aus. In dieser ist ein Ping auf den Rechner, ist der Ping erfolgreich, dann starte Xcopy, falls DB offen ist, geht der sowieso schief, xcopy bricht ab. Falls der Ping nicht erfolgreich, dann eine Warteschleife und das ganze von vorne. Ping Abfrage mit "if not errorlevel 1" startet den copy Job ---- oder so ähnlich müßts tun.
Gruß - Toni
Mitglied: 11193
11193 Mar 24, 2005 at 11:03:07 (UTC)
Goto Top
Welche Lösung empfiehlt sich nicht? Batch oder richtige Datensicherung? Eine richtige
Datensicherung existiert bereits schon. Allerdings soll noch eine lokale Lösung (über Batch=
realsierst werden damit man schneller und unbürokratischer auf das Backup zugreifen kann.
Kann mir jemand mal einen Beispiel Quellcode zeigen?
Member: leknilk0815
leknilk0815 Mar 24, 2005 at 11:36:12 (UTC)
Goto Top
Beispiel:

@echo off

:start
ping 127.0.0.1

if not errorlevel 1 goto go
if errorlevel 1 goto nogo

:go
echo starte copy
xcopy ...........

exit

:nogo
echo rechner ist noch nicht online, warte

wait 10 key
goto start
exit
end

Die nötige Datei "wait.exe" bekommst Du hier:
http://www.bjoernhenke.de/frame.htm?/wait/index.de.htm