larz

Datenbank mit OSQL wiederherstellen

Datenbanksicherung von Echtsystem in Testsystem einspiele

Hallo zusammen,

wir haben hier eine Datenbankanwendung auf einem SQL 2000 Server (demnächst 2005), für der es eine Produktiv- und eine Test-Datenbank gibt.
Wollen die Benutzer also was ausprobieren, melden Sie sich an der Test-DB usw.

Hierzu möchten die Kollegen in unregelmäßigen Abständen, teilweise sehr kurzfristig und zu ungewöhnlichen Zeiten, dass wir das Backup des Produktivsystems in die DB des Testsystems einspielen/überspielen. Das möchten wir ihnen jetzt zukünftig selbst überlassen, ohne dass sie Zugriff auf den Enterprise-Manager brauchen. Die melden sich per Windows am Test-Server an und starten eine Batch Datei.

Ich habe jetzt folgenden OSQL-Befehl zusammen, aber irgendwie funktioniert das noch nicht. Kann hier jemand vielleicht sagen, woran es liegen könnte?

SET BEFEHL=OSQL -E -Q "RESTORE DATABASE %TargetDB% FROM DISK = N'%BackupSource%\%NewestBackup%' WITH FILE = 1, NOUNLOAD, REPLACE,  STATS = 10"  
%BEFEHL%

Ich muss den kompletten Befehl aufgrund der Variablen TargetDBm BackupSource und NewestBackup in eine extra Variable "Befehl" setzen. OSQL konnte die Variablen nicht interpretieren.

---

Hier die Fehlermeldung:

Meldung 1834, Ebene 16, Status 1, Server LTTDB04, Zeile 1
Die Datei 'C:\Programme\Microsoft SQL Server\MSSQL\data\PRODUKTIVLG.MDF' kann
nicht überschrieben werden. Sie wird von der PRODUKTIVLG-Datenbank verwendet.
Meldung 3156, Ebene 16, Status 1, Server LTTDB04, Zeile 1
Die Datei 'PRODUKTIVLG_Data' kann nicht in 'C:\Programme\Microsoft SQL
Server\MSSQL\data\PRODUKTIVLG.MDF' wiederhergestellt werden. Verwenden Sie WITH
MOVE, um einen gültigen Speicherort für die Datei zu identifizieren.
Meldung 1834, Ebene 16, Status 1, Server LTTDB04, Zeile 1
Die Datei 'C:\Programme\Microsoft SQL Server\MSSQL\data\PRODUKTIVLG.LDF' kann
nicht überschrieben werden. Sie wird von der PRODUKTIVLG-Datenbank verwendet.
Meldung 3156, Ebene 16, Status 1, Server LTTDB04, Zeile 1
Die Datei 'PRODUKTIVLG_Log' kann nicht in 'C:\Programme\Microsoft SQL
Server\MSSQL\data\PRODUKTIVLG.LDF' wiederhergestellt werden. Verwenden Sie WITH
MOVE, um einen gültigen Speicherort für die Datei zu identifizieren.
Meldung 3013, Ebene 16, Status 1, Server LTTDB04, Zeile 1
RESTORE DATABASE wird fehlerbedingt beendet.


Danke schon mal

Gruß
Larz
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 115887

Url: https://administrator.de/forum/datenbank-mit-osql-wiederherstellen-115887.html

Ausgedruckt am: 29.04.2025 um 03:04 Uhr

32067
32067 12.05.2009 um 14:38:20 Uhr
Goto Top
Eigentlich steht das in den Meldungen schon drin face-wink

Du musste noch mit der Option WITH MOVE neue Pfade für die mdf und ldf-Datei angeben. Ohne Angabe nimmt er die Werte im Backup-File - und die zeigen ja auf die Produktions-DB, die aber läuft, somit sind deren Dateien in Benutzung und er kann sie nicht einfach so überschreiben.

RESTORE DATABASE nwind_new FROM DISK = 'c:\backups\northwind\nwind.bak'
WITH MOVE 'northwind' TO 'd:\Program Files\Microsoft SQL
Server\Data\nwind_new.mdf'
MOVE 'northwind_log' TO 'd:\Program Files\Microsoft SQL
Server\Data\nwind_new_log.ldf'
Larz
Larz 12.05.2009 um 15:10:17 Uhr
Goto Top
...leider funktioniert esso auch nicht. Er bringt mir als Fehler nun

Meldung 3141, Ebene 16, Status 1, Server LTTDB04, Zeile 1
Die wiederherzustellende Datenbank erhielt den Namen 'PRODUKTIVLG'. Wiederholen
Sie die Anweisung unter Verwendung der Option WITH REPLACE, um die
TESTLG-Datenbank zu überschreiben.
Meldung 3013, Ebene 16, Status 1, Server LTTDB04, Zeile 1
RESTORE DATABASE wird fehlerbedingt beendet.

Und bei "WITH REPLACE" bekomme ich dann die Meldung, das sei nicht für "RESTORE" geeignet...

hm...