Discussion:
DB von einem Server auf einen anderen kopieren
(zu alt für eine Antwort)
Christof Zottmann
2006-05-02 08:37:31 UTC
Permalink
Hallo!

Ich habe hier zwei identische Server (SBS 2003 Premium), der eine
steht im Büro, der andere lediglich als Backup-System zu Hause. Die
Daten werden regelmäßig über eine USB-Platte abgeglichen.

Mein Problem ist folgendes: Ich kopiere nach Beenden des
SQL-Server-Dienstes DB-File und Logfile über eine USB-Platte auf den
anderen Server (und ersetze die dort vorhandenen beiden Files). Wenn
ich dort den Dienst wieder starte, wird die Datenbank als fehlerhaft
erkannt.

Mir ist das vollkommen unverständlich, da ein ähnliches Vorgehen z. B.
bei einer Sybase-DB ohne Probleme möglich ist.

Kann mir jemand einen Tip geben, wie ich die DB kopieren kann?
Jens
2006-05-02 08:47:49 UTC
Permalink
Ich würde entweder den Mechanismus über

1) Backup and Restore -oder
2) sp_detach und sp_attach wählen

Diese beiden haben bei mir bisher immer funktioniert, wobei ein Backup
und Restore die sicherste Methode ist ein Abbild der Datenbank zu
erhalten.

HTH, Jens Suessmeyer.

---
http://www.sqlserver2005.de
---
Christof Zottmann
2006-09-17 11:28:19 UTC
Permalink
Post by Jens
Ich würde entweder den Mechanismus über
1) Backup and Restore -oder
2) sp_detach und sp_attach wählen
Diese beiden haben bei mir bisher immer funktioniert, wobei ein Backup
und Restore die sicherste Methode ist ein Abbild der Datenbank zu
erhalten.
Hallo nochmal,

bin jetzt erst dazugekommen, dass mal zu testen. Leider funktioniert
die Variante mit dem Backup bei mir nicht.

Ich beschreibe mal detaillierte, wie ich das gemacht habe:

- SQL Enterprise Manager aufgerufen
- Konsolenstamm, Microsoft SQL Servers, SQL Server-Gruppe, (local)
(Windows NT), Datenbanken, [Datenbankname]
- Rechtsklick auf [Datenbankname], Alle Tasks, Datenbank sichern
- Jetzt wähle ich "Datenbank vollständig" und als Ziel wähle ich eine
USB-Festplatte aus

Nach erfolgter Sicherung stecke ich die USB-Platte an den
Backup-Server an und wähle logischerweise "Datenbank
wiederherstellen". In dem DropDown-Feld "Erste wiederherzustellende
Sicherung" habe ich jedoch lediglich die Sicherungen zur Auswahl, die
ich auf dem Backup-System selbst erstellt habe. Auf die Sicherung, die
ich eigentlich zurückspielen möchte, habe ich keinen Zugriff.

Mit erscheint das ganze etwas unlogisch. Denn das würde ja bedeuten,
dass eine Sicherung, für den Fall, daß der Server selbst defekt ist
und neu installiert werden muss, es nicht möglich ist, eine gesicherte
Datenbank wieder einzuspielen.

Mache ich beim Restore was falsch?

Danke für alle Antworten bereits im Voraus!
Anton Hengg
2006-09-17 11:36:49 UTC
Permalink
Hallo Christian,

du musst zur Option von Medien gehen.
Da kannst du die Sicherung auswählen.

Gruss
Anton
Christof Zottmann
2006-09-18 07:03:28 UTC
Permalink
On Sun, 17 Sep 2006 13:36:49 +0200, "Anton Hengg"
Post by Anton Hengg
Hallo Christian,
du musst zur Option von Medien gehen.
Da kannst du die Sicherung auswählen.
Hallo Anton, das war's. Danke!
Jens
2006-09-17 14:11:06 UTC
Permalink
Denk daran, daß Du nur die physikalischen laufwerke des Servers sehen
wirst, nicht die lokalen des Clients. Wenn Du dann von einem Medium
herstellt anstatt aus der Restore library solltest Du auch die Restore
History sehen.

HTH, Jens Suessmeyer.

---
http://www.sqlserver2005.de
---
Christof Zottmann
2006-09-17 13:06:10 UTC
Permalink
Post by Jens
Ich würde entweder den Mechanismus über
1) Backup and Restore -oder
2) sp_detach und sp_attach wählen
Ich habe jetzt auch Variante 2 probiert, geht aber auch nicht.

Zuerst habe ich auf dem Produktivserver im Query Analyzer den Befehl
sp_detach_db 'dbname'
eingegeben.

Danach habe ich die DB und das Log auf die USB-Platte kopiert.
Anschließend mit folgendem Befehl die DB wieder angehängt:

EXEC sp_attach_db @dbname = N'dbname',
@filename1 = N'C:\Pfadangabe\db.mdf',
@filename2 = N'C:\Pfadangabe\db.ldf'

Hat soweit alles einwandfrei funktioniert. Anschließend habe ich die
USB-Platte an den Backup-Server angeschlossen und die beiden Files auf
diesen kopiert. Dann habe ich den gleichen Befehl (sp_attach_db)
erneut ausgeführt, mit folgendem Ergebnis:

Server: Nachr.-Nr. 9004, Schweregrad 21, Status 10, Zeile 1
Fehler beim Verarbeiten des Protokolls für die dbname-Datenbank.

Die Verbindung wurde unterbrochen.

Gleiches Ergebnis übrigens mit sp_attach_single_file_db.

Kann mir da jemand helfen?
Michael Monarch
2006-09-17 14:31:01 UTC
Permalink
Servus,

also ich versuch mal dein Problem nach zuvollziehen:

Du bist an einem Server X und sicherst die Datenbank XY vollständig auf eine
USB-Platte. Nun willst du sie wieder auf einem Server Y hochziehen, richtig ?

Nun, dürft doch kein Problem sein, hier mal Schritt für Schritt :

1)SQL-Enterprise-Manager starten
2)Im Strukturfenster (linke Seite) den SQLServer auswählen
3)Rechte Maustaste auf den "Ordner" Datenbank klicken, dann Alle Tasks -
Datenbanke wiederherstellen wählen.

- Nun müsste das Fenster Datenbank wiederherstellen aufgehen -

4) Im Reiter "Allgemein" bei Wiederherstellen den Punkt "Von Medien"
aktivieren

- Das Fensterbild ändert sich -

5) Jetzt den Button "Medien auswählen.." klicken

- Nun müsste das Fenster Wiederherstellungsmedien auswählen aufgehen -

6) Falls in der Liste "Medienname" bereits was stehen sollte , die Einträge
entferen
7)Butten "Hinzufügen" klicken und die Backupdatei von der USB aussuchen
8) Solange OK drücken bist du wieder im Fenster "Datenbank wiederherstellen"
bist
9) Oben bei Wiederherstellen als Datenbank einen Namen angeben z.B "TestDB"
10) Nun auf den Reiter Optionen gehen
11) Dort findest du ein Grid mit der Spalte "zum physischen Dateinamen
verschieben". Hier gebe bitte einen Pfad (für *.mdf und *.ldf)) an wo die DB
wiederhergestellt werden soll. (inkl. Dateiname)

12) nun noch den OK button und los gehts.

mfg
michael monarch
Christof Zottmann
2006-09-18 07:06:05 UTC
Permalink
On Sun, 17 Sep 2006 07:31:01 -0700, Michael Monarch
Post by Michael Monarch
4) Im Reiter "Allgemein" bei Wiederherstellen den Punkt "Von Medien"
aktivieren
Hallo Michael, Danke für die ausführliche Beschreibung. Ich hatte
einfach Tomaten auf den Augen und den Radiobutton "Von Medien"
übersehen. Es hat dann geklappt, Danke!

Frank Kalis
2006-05-02 08:49:01 UTC
Permalink
Post by Christof Zottmann
Ich habe hier zwei identische Server (SBS 2003 Premium), der eine
steht im Büro, der andere lediglich als Backup-System zu Hause. Die
Daten werden regelmäßig über eine USB-Platte abgeglichen.
Mein Problem ist folgendes: Ich kopiere nach Beenden des
SQL-Server-Dienstes DB-File und Logfile über eine USB-Platte auf den
anderen Server (und ersetze die dort vorhandenen beiden Files). Wenn
ich dort den Dienst wieder starte, wird die Datenbank als fehlerhaft
erkannt.
Mir ist das vollkommen unverständlich, da ein ähnliches Vorgehen z. B.
bei einer Sybase-DB ohne Probleme möglich ist.
Kann mir jemand einen Tip geben, wie ich die DB kopieren kann?
Nicht alles, was andere RDBMS zulassen, ist auch besser. :-)

http://support.microsoft.com/default.aspx?scid=kb;EN-US;314546
--
Frank Kalis
Microsoft SQL Server MVP
http://www.insidesql.de
Heute schon gebloggt? http://www.insidesql.de/blogs
Ich unterstütze PASS Deutschland e.V. (http://www.sqlpass.de)
Christof Zottmann
2006-05-02 12:12:18 UTC
Permalink
Post by Frank Kalis
Nicht alles, was andere RDBMS zulassen, ist auch besser. :-)
Aber wo konkret ist der Nachteil?
Frank Kalis
2006-05-02 13:19:01 UTC
Permalink
Post by Christof Zottmann
Post by Frank Kalis
Nicht alles, was andere RDBMS zulassen, ist auch besser. :-)
Aber wo konkret ist der Nachteil?
Der konkrete Nachteil ist - wie Deinem Fall - daß es nicht immer funktioniert.

In der Tabelle sysdatabases gibt es eine Spalte status. AFAIK, setzt nur die
sp_detach_db Systemprozedur dort den Status "cleanly shutdown". D.h. alles in
Ordnung, DB ist in einem konsistenten Zustand.

Nachdem Du sp_detach angewendet hast, kannst Du die Dateien nach Belieben
mit dem Betriebssystem hin- und herkopieren und die DB auf einem anderen
Server wieder mit sp_attach in Betrieb nehmen.
--
Frank Kalis
Microsoft SQL Server MVP
http://www.insidesql.de
Heute schon gebloggt? http://www.insidesql.de/blogs
Ich unterstütze PASS Deutschland e.V. (http://www.sqlpass.de)
Christof Zottmann
2006-05-02 15:05:13 UTC
Permalink
Post by Frank Kalis
Der konkrete Nachteil ist - wie Deinem Fall - daß es nicht immer funktioniert.
Bei Sybase funktioniert es ja problemlos...
Post by Frank Kalis
In der Tabelle sysdatabases gibt es eine Spalte status. AFAIK, setzt nur die
sp_detach_db Systemprozedur dort den Status "cleanly shutdown". D.h. alles in
Ordnung, DB ist in einem konsistenten Zustand.
D. h., wenn ich lediglich den Dienst beende, wird der Status nicht auf
"cleanly shutdown" gesetzt.
Post by Frank Kalis
Nachdem Du sp_detach angewendet hast, kannst Du die Dateien nach Belieben
mit dem Betriebssystem hin- und herkopieren und die DB auf einem anderen
Server wieder mit sp_attach in Betrieb nehmen.
Ok, habe ich verstanden. Werde ich ausprobieren. Aber kannst Du mir
noch schnell sagen, *wo* ich sp_detach bzw. attach eingeben muss?

Danke!
Frank Kalis
2006-05-03 06:58:02 UTC
Permalink
Post by Christof Zottmann
Post by Frank Kalis
Nachdem Du sp_detach angewendet hast, kannst Du die Dateien nach Belieben
mit dem Betriebssystem hin- und herkopieren und die DB auf einem anderen
Server wieder mit sp_attach in Betrieb nehmen.
Ok, habe ich verstanden. Werde ich ausprobieren. Aber kannst Du mir
noch schnell sagen, *wo* ich sp_detach bzw. attach eingeben muss?
Beim SQL Server kannst Du das entweder über den Query Analyzer machen oder
über den Enterprise Manager die Datenbank offline nehmen. Beispiele für die
Syntax findest Du in der Online-Hilfe.
Ich weiß allerdings nicht, ob diese Tools beim SBS Paket mit dabei sind.
--
Frank Kalis
Microsoft SQL Server MVP
http://www.insidesql.de
Heute schon gebloggt? http://www.insidesql.de/blogs
Ich unterstütze PASS Deutschland e.V. (http://www.sqlpass.de)
Lesen Sie weiter auf narkive:
Loading...