larz
Goto Top

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

Content-Key: 115887

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

Printed on: April 27, 2024 at 05:04 o'clock

Mitglied: 32067
32067 May 12, 2009 at 12:38:20 (UTC)
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'
Member: Larz
Larz May 12, 2009 at 13:10:17 (UTC)
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...