Veröffentlicht 15. Mai 200322 j 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
16. Mai 200322 j Moin! Vielleicht könnte Dir beim restore "REPLACE" weiterhelfen. Dient dazu, eine vorhandene Datenbank zu ersetzen!
16. Mai 200322 j ...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
16. Mai 200322 j Autor 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
16. Mai 200322 j Hi! Probier mal den MOVE-Teil wegzu lassen. Er müsste in dem Backup eigentlich alle infos über die einzelnen Dateien haben.
16. Mai 200322 j Autor 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
26. Mai 200322 j Autor 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.