Beagol Geschrieben 15. Mai 2003 Teilen Geschrieben 15. Mai 2003 Hi, folgendes Prozedere: Ich kann im Enterprise Manager des SQL Server 2000 eine Datenbank mit einem fremden Backup wiederherstellen. D.H. ich geh auf "Wiederherstellen", suche mir das Backup, welches ich haben will und mache ein paar Einstellungen um deas fremde Backup einzuspielen. Diejenige die es schon gemacht haben, wissen was ich meine. Ich möchte dies nun in T-SQL machen. Hat da jemand ein Workaround für? Ich bin soweit: use master BACKUP DATABASE Urdatenbank TO DISK = 'e:\sqldb\BACKUP\urdatenbank.bak' RESTORE DATABASE ABC_AD_SCHUE001 FROM DISK = 'e:\sqldb\BACKUP\urdatenbank.bak' WITH MOVE 'urdatenbank_dat' TO 'e:\sqldb\Data\ABC_AD_SCHUE001.mdf', MOVE 'urdatenbank_log' TO 'e:\sqldb\Data\ABC_AD_SCHUE001log.ldf', Da krieg ich aber die Fehlermeldung, dass die Datenbank noch im Zugriff ist. Wie kann ich hier das Überschreiben erzwingen? Wer ne Idee hat...... Gruss und Danke Dietmar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pointerman Geschrieben 16. Mai 2003 Teilen Geschrieben 16. Mai 2003 Moin! Vielleicht könnte Dir beim restore "REPLACE" weiterhelfen. Dient dazu, eine vorhandene Datenbank zu ersetzen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HolzOnkel Geschrieben 16. Mai 2003 Teilen Geschrieben 16. Mai 2003 ...hmm... der Sperrprozess müsste mit einer aktiven SPID verbunden sein. Die kann man auslesen und killen... damit müsste einem Überschreiben nichts im Wege stehen... Hinweis: Nur eine theoretische Überlegung, habe sowas noch nie ausprobiert... aver vom rein logischen her... Gruss, der Onkel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Beagol Geschrieben 16. Mai 2003 Autor Teilen Geschrieben 16. Mai 2003 Original geschrieben von Pointerman Vielleicht könnte Dir beim restore "REPLACE" weiterhelfen. Dient dazu, eine vorhandene Datenbank zu ersetzen! Hi! OK, das mit REPLACE klingt logisch. Habs getestet und eine neue Fehlermeldung parat, die aber in sich nicht schlüssig ist. Ich setze also folgendes Statement ab:use master BACKUP DATABASE Urdatenbank TO DISK = 'e:\sqldb\BACKUP\urdatenbank.bak' RESTORE DATABASE ABC_AD_SCHUE001 FROM DISK = 'e:\sqldb\BACKUP\urdatenbank.bak' WITH replace, MOVE 'urdatenbank_dat' TO 'e:\sqldb\Data\ABC_AD_SCHUE001.mdf', MOVE 'urdatenbank_log' TO 'e:\sqldb\Data\ABC_AD_SCHUE001log.ldf'Als Fehler meldet mir der Server: Die logische Datei 'Die logische Datei 'datenbank_dat' ist nicht Teil der ABC_AD_SCHUE001-Datenbank. Verwenden Sie RESTORE FILELISTONLY zum Auflisten der logischen Dateinamen.' Alles klar, mache ich. Und RESTORE FILELISTONLY bringt das Ergebnis: LogicalName: 'datenbank_dat' Ist auch logisch, weil ich das vorher auch so angelegt habe. Und nu ? :confused: Gruss Dietmar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pointerman Geschrieben 16. Mai 2003 Teilen Geschrieben 16. Mai 2003 Hi! Probier mal den MOVE-Teil wegzu lassen. Er müsste in dem Backup eigentlich alle infos über die einzelnen Dateien haben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Beagol Geschrieben 16. Mai 2003 Autor Teilen Geschrieben 16. Mai 2003 Original geschrieben von Pointerman Probier mal den MOVE-Teil wegzu lassen. Er müsste in dem Backup eigentlich alle infos über die einzelnen Dateien haben. Neeee, das kann ja nicht klappen. Im Backup stehen die Infos zur ursprünglichen Datenbank. Ich will ja aber nicht wieder dahin zurücksichern, sondern in ein fremde Datenbank. Eben diese, die ich bei MOVE angebe. Gruss Dietmar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Beagol Geschrieben 26. Mai 2003 Autor Teilen Geschrieben 26. Mai 2003 Für alle die es interessiert und evtl. nach diesem Thema gesucht haben, ich habe es so gelößt: exec sp_detach_db 'urdatenbank' exec sp_detach_db 'ABC_AD_SCHUE001' exec xp_cmdshell 'cmd.exe /c copy C:\SQLData\urdatenbank.mdf C:\SQLData\DatABC_AD_SCHUE001.mdf',NO_OUPUT exec xp_cmdshell 'cmd.exe /c copy C:\SQLData\urdatenbank_log.ldf C:\SQLData\LogABC_AD_SCHUE001.ldf',NO_OUPUT exec sp_attach_db 'ABC_AD_SCHUE001', 'C:\SQLData\DATABC_AD_SCHUE001.mdf','C:\SQLData\LogABC_AD_SCHUE001.ldf' exec sp_attach_db 'urdatenbank', 'C:\SQLData\urdatenbank.mdf','C:\SQLData\urdatenbank_log.ldf' Also die Quell und Ziel Datenbanken abgehangen, die Dateiendateien kopiert und dann die Datenabken wieder angehangen. Fertig. Der Nachteil hierbei ist, dass die Datenabken nicht online beleiben, was aber bei meiner Anforderung nicht so schlimm ist. Gruss Dietmar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.