2009-11-16 17 views
5

Ich muss eine gesamte Datenbank von einem SQL Server 2008-Computer auf einen SQL Server 2000-Computer verschieben.SQL Server 2008-Datenbank zu SQL Server 2000 wiederherstellen

Ich erstellte eine Sicherung mit Management Studio 2008, kopierte sie auf die Festplatte der 2000-Box, und von Management Studio 2008, wähle ich Wiederherstellen der Datenbank in die 2000-Box.

Ich bekomme eine Fehlermeldung, die besagt, "Die Medienfamilie auf dem Gerät ... ist falsch gebildet. SQL Server kann diese Medienfamilie nicht wiederherstellen".

Wenn ich Enterprise Manager 2000 verwende, erhalte ich den gleichen Fehler.

Gibt es eine Möglichkeit, eine ganze Datenbank vom neueren SQL Server auf den älteren zu verschieben?

Antwort

10

Das einzige, was mir einfällt, ist, die gesamte Struktur neu zu erstellen und dann Daten aus einer Live-Datenbank zu kopieren. Erstellen Sie also Skripts, die die Tabellen, Ansichten und SPs erstellen, und erstellen Sie dann Skripts, um die Daten aus der vorhandenen Datenbank zu kopieren.

+1

Ich bin gerade fertig damit, dies selbst zu tun. Die einzige Möglichkeit, dies zu tun, war, die gesamte Datenbank (einschließlich der Daten) zu skripten und das Skript auf dem Zielrechner auszuführen. Nun, das ist ein Problem, weil die Datenbank 2008 ein Skript erstellen kann, das nicht auf 2000 läuft (na ja, meins), also müssen Sie das generierte Skript bearbeiten, bevor Sie 2000 laufen. Bevor Sie beginnen, sollten Sie Tylenol auffüllen. Viel Glück. – BoltBait

+4

Ja, das ist der einzige Weg, es zu tun. SQL Server war nie abwärtskompatibel, z. Sie konnten nie eine neuere Version auf einem älteren Server wiederherstellen. Ich denke nicht, dass sich das ändern wird. –

0

Ich habe gehört, Sie können nur tun, indem Sie die SQL-Anweisung Dump aus dem DB-Administrator-Tool generieren und diese Abfragen auf der Ziel-ältere Datenbank erneut ausführen.

+1

Natürlich müssen Sie sie manipulieren, wenn das Skriptwerkzeug Dinge einsetzt, die 2000 nicht erkennen. – HLGEM

1

Sie können keine Backups von einer neueren Version auf eine ältere Version verschieben. In diesem Fall können Sie Ihre Datenbank scripten, im Feld 2000 ausführen und dann die Standarddatenübertragung verwenden, um die gewünschten Daten zu übertragen

0

Sie können ein Skript generieren, das alle Objekte neu erstellt und alle Daten überträgt ... solange alles in der Datenbank in SQL 2000 gültig ist. Also keine ROW_NUMBER(), keine PARTITION, keine CTEs, keine Datetime2, Hierarchie oder mehrere andere Feldtypen, keine EXECUTE AS, und viele andere Güte. Im Grunde gibt es eine ziemlich gute Chance, es ist nicht möglich, es sei denn, Ihre Db ist ziemlich einfach.

1

Sofern Sie eine Netzwerkverbindung zwischen den Computern haben, verwenden Sie SSIS. Viel einfacher und viel weniger herumspielen.

1

Sie Skript-Generator für Ihre Datenbank verwenden können, und wählen Sie dann in den Eigenschaften bilden: Allgemein-> Script für Server-Version SQL Server 2000

Der Skript-Generator Sie die Dinge zeigen, die nicht kompatibel mit Ihrem Server-Version .

2

Wie andere bereits sagten, gibt es keinen Standard Weg, dies zu tun. Es wird einfach nicht unterstützt. Hier finden Sie ausführlichere Informationen dazu, wie Sie dies richtig machen und Migrationsprobleme vermeiden.

Sie müssen Skripte für Struktur und Daten generieren und diese dann auf SQL 2000 ausführen (wie andere schon gesagt haben), aber es gibt einige Dinge zu beachten.

generieren Skripte in SSMS

  • Stellen Sie sicher, Option für Skripting Daten für SQL 2000 zu überprüfen, Probleme zu vermeiden, wenn sie versuchen, 2000 so etwas wie Geographie Typ Spalte auf SQL zu erstellen.
  • Stellen Sie sicher, Ausführungsreihenfolge von Scripts überprüfen Abhängigkeit basieren Fehler

Dies ist eine gute Option für kleine bis mittelgroße Datenbanken zu vermeiden und erfordert einige Kenntnisse von SQL Server (Abhängigkeiten, Unterschiede zwischen den Versionen und so weiter)

Third-Party-Tools

  • Idee sind dritte Datenbank-Vergleich-Tools wie ApexSQL Diff oderzu verwenden 0
  • gute Seite ist, dass diese Pflege der Skriptausführung nehmen und die Unterschiede zwischen den Versionen
  • Nicht so gut ist die Tatsache, dass man für diese nach dem Probe zahlen müssen werde endet
  • ich diese beiden Tools verwendet haben erfolgreich, aber Sie können mit keinem anderen Werkzeug auf dem Markt falsch gehen. Here ist eine Liste anderer Tools in dieser Kategorie.
0

Wir haben eine ähnliche Situation. Ein sehr Low-Tech, aber praktische Lösung ist:

  1. Backup und Kürzen Sie die Tabellen in SQL 2000
  2. einen Verbindungsserver in SQL 2008 erstellen, indem er auf SQL 2000
  3. eine Auswahlabfrage bei sysobjects laufen Erstellen Sie ein Abfrageskript für insert into LINKED SERVER.table select * from table
  4. führen Sie Abfrage-Skript aus.