Migrieren Sie von SQL Server 2000 nach 2012 ohne eine Instanz von 2005 oder 2008

11

Ich bin auf drei alte Datenbanken gestoßen, die auf SQL Server 2000 installiert sind und auf 2012 verschoben werden müssen. Ich glaube, der Standardansatz besteht darin, eine Instanz von 2005 oder 2008 wiederherzustellen, zu aktualisieren, erneut zu exportieren und schließlich in 2012 wiederherzustellen.

Gut, außer wir haben keine Instanzen für 2005 oder 2008 verfügbar.

Gibt es Problemumgehungen oder andere Methoden, die einen Versuch wert sein könnten?

Zur Information, die Datenbanken enthalten nur 15 bis 20 Tabellen und einige Ansichten, sie erscheinen sehr einfach und die Sicherungen sind nur 100 bis 200 MB groß.

Lunatik
quelle
1
Da Ihre Datenbank klein ist, können Sie das gesamte Datenbankschema (keine Daten - mit PowerShell oder SSMS) ausschreiben und dann bcp OUT und Bulk Insert verwenden . Sobald Sie mit der Migration der Daten fertig sind, können Sie die in dieser Antwort beschriebenen Best Practices
Kin Shah
1
Es ist vollkommen legal und wird durch die Lizenzierung von SQL abgedeckt, eine Zwischeninstanz als "Brücke" für ein Upgrade zu installieren. Kein Benutzer sollte eine Verbindung herstellen. ...
Rostol

Antworten:

21

Nein, es gibt keine Problemumgehung, um eine Datenbank direkt von 2000 auf 2012 zu aktualisieren.

Da Sie nicht über eine Menge Daten verfügen, können Sie alle möglichen Aktionen ausführen, um die Daten (jedoch nicht die gesamte Datenbank) zu verschieben, einschließlich:

  • Import / Export-Assistent
  • SSIS
  • BCP
  • Manuelle Abfragen mit einem Verbindungsserver aus dem Jahr 2012 oder einer Anwendung

Diese bringen jedoch nicht unbedingt andere Dinge wie Benutzer, Berechtigungen, Rollen usw. mit sich. Und nicht alles erstellt Ihre Objekte in der richtigen Abhängigkeitsreihenfolge. Sie sind also arbeitsintensiver und fehleranfälliger. Nach meiner Erfahrung wäre es sinnvoll, nur vorübergehend eine Zwischeninstanz einzurichten und dann zwei Sicherungs- und Wiederherstellungsvorgänge durchzuführen - dies ist einfacher, schneller und weniger fehleranfällig als jede der oben genannten Methoden.

Wenn Ihre Datenbanken kleiner als 10 GB sind, können Sie in wenigen Minuten eine Kopie von Express (kostenlos) installieren und diese verwenden. Sie können 2008 R2 Express hier herunterladen . Ich glaube nicht, dass es im Jahr 2000 Enterprise-Funktionen rund um die Datenbankstruktur usw. gibt, die dieses Upgrade blockieren würden (ein größeres Problem für modernere Versionen).

Wenn Ihre Datenbank für Express zu groß ist, sollten Sie in der Lage sein, Developer Edition für etwa 49 US-Dollar zu finden (oder sogar billiger - ich habe 2005 bei eBay für 37 US-Dollar gefunden ), oder wenn Sie ein MSDN-Abonnement haben, sollten Sie in der Lage sein, eines zu erhalten SKU von dort.

Oder Sie können eine Evaluation Edition verwenden, die erstaunlicherweise immer noch für ältere Versionen zum Download angeboten wird (z. B. habe ich 2008 hier gefunden ). Ich bin jedoch auf einem Telefon und konnte daher nicht bestätigen, dass der Download für diese Version immer noch funktioniert .

Aaron Bertrand
quelle
Vielen Dank. Da die Internetgeschwindigkeit hier schlecht ist, habe ich versucht, Downloads zu vermeiden, aber ich habe die 2005-Installationsbinärdateien gefunden, sodass ich denke, dass dies die schnellste Methode ist.
Lunatik
Nein, das einzig wirklich Nützliche ist 2008, sonst brauchst du auch 2010 von 2005
Rostol
Bist du sicher, @Rostol? sqlskills.com/blogs/paul/…
Adam Nofsinger
@AdamNofsinger Ich wollte 100% sicher sagen, dass ich dies millionenfach getan habe (wir haben ein altes SQL 2000, das von einem alten System verwendet wird) und eine speziell für 2008 erstellte VM erstellt habe, um zuerst die Daten wiederherzustellen und dann in SQL 2016 zu sichern und wiederherzustellen ... Aber wenn Paul Randal etwas anderes sagt ... aber bedenken Sie, dass die direkte Methode ab 2005+ funktioniert. nicht für 2000 und 2003 gerade.
Rostol
6

Es scheint etwas verfrüht zu sein, dass es keine Problemumgehung gibt.

Sie sagen, Ihre Datenbank enthält nur wenige Tabellen und Ansichten. Warum exportieren Sie das Tabellen- und Ansichtsschema nicht als SQL-Erstellungsanweisungen und führen sie in Ihrer Zieldatenbank aus? Sie können dann auch die tatsächlichen Daten in ein CSV-Format exportieren und in die Zieldatenbank importieren oder sogar etwas in C # / C ++ / etc schreiben, um die tatsächlichen Daten zu exportieren / importieren.

Sie müssten keinen Cent für neue Instanzen von SQL Server ausgeben, die Sie letztendlich nicht benötigen.

Nicholas Hill
quelle
3
Dazu gehören natürlich auch alle anderen Objekte, gespeicherten Prozeduren, Trigger, Funktionen usw. Ebenso gibt es das BCP-Dienstprogramm zum Kopieren von Daten aus und in eine Datenbank.
RLF
1
Vielen Dank. Das ist die Art von Dingen, auf die ich vielleicht gehofft habe, aber DB-Wrangling ist nicht mein Tagesjob und ich bin mir nicht sicher, ob es andere Abhängigkeiten oder Einstellungen (Benutzerberechtigungen usw.) gibt, die nicht kopiert würden, wenn ich habe gerade die Tabellen usw. exportiert
Lunatik
4
Fair genug, aktualisierte meine Antwort. Denken Sie immer noch, dass eine Problemumgehung viel mehr Arbeit bedeutet, als nur eine Instanz vorübergehend einzurichten und zwei zuverlässige und nicht fehleranfällige Sicherungs- und Wiederherstellungsvorgänge durchzuführen. (Außerdem scheint es nicht um Geld zu gehen , da das OP bereits Binärdateien für 2005 hat und eine so kleine Datenbank ohnehin mit SQL Express migriert werden kann.)
Aaron Bertrand
3

Nein, Sie können es nicht direkt von 2000 auf 2012 migrieren.

Sie können eine temporäre Instanz von 2005 ODER 2008 oder 2008R2 installieren und die Datenbank 2000 hier wiederherstellen. Sobald dies erledigt ist, können Sie jetzt ein Upgrade von der installierten Instanz durchführen, indem Sie die Sicherung der Datenbank von dieser Instanz erstellen und auf dem SQL Server 2012 wiederherstellen.

Sie müssen die Migration in zwei Schritten durchführen:

  • Schritt 1: Führen Sie beispielsweise eine erste Migration von SQL 2000 nach SQL 2008 durch. Sie müssen SQL 2000 SP4 sein und dann den folgenden Schritt ausführen: Migration von SQL Server 2000 auf SQL Server 2008

  • Schritt 2: Führen Sie eine zweite Migration von SQL Server 2008 nach 2012 durch.

KASQLDBA
quelle
0

Sie sagen, Sie sind auf drei alte Datenbanken gestoßen, die auf SQL Server 2000 installiert sind, was mich zu der Annahme veranlasst, dass Sie nur die Daten benötigen. Ich würde vermuten, dass Sie es wissen würden, wenn sie zu einem bestimmten Zweck betrieben würden. Wenn dies der Fall ist, ignorieren Sie alle Fragen der Benutzer, der Sicherheit usw.

Import / Export-Assistent alle Tabellen Skript der gespeicherten Prozeduren und Ansichten Suchen Sie nach Wartungsplänen und Agentenjobs, um Prozesse zu dokumentieren, die Sie später möglicherweise betrachten möchten.

Mitch Stein
quelle
0

Sie können nicht direkt von SQL Server 2000 auf SQL Server 2012 migrieren. Wenn Sie dies versuchen, wird die folgende Fehlernummer 3169 angezeigt, die sich auf Kompatibilitätsprobleme bezieht.

Die Migration zu SQL Server 2012 kann von einer der folgenden Versionen (Mindestversionen) SQL Server 2005 SP4 oder SQL Server 2008 SP2 oder SQL Server 2008 R2 SP1 erfolgen.

Als ersten Schritt zur Migration von SQL Server 2000 auf eine dieser Versionen habe ich unter dem folgenden Link einen Upgrade Advisor für SQL Server 2008 gefunden . Um sicherzustellen, dass alles reibungslos funktioniert, bevor Sie mit dem Wiederherstellungsprozess beginnen, müssen Sie die Anwendung ausführen. Klicken Sie dann auf "Upgrade Advisor Analysis Wizard starten" und befolgen Sie die Schritte des Assistenten.

Nachdem Sie den Bericht erhalten haben, müssen Sie die Datenbank auf dem Ziel-SQL Server 2005 SP4 oder SQL Server 2008 SP2 oder SQL Server 2008 R2 SP1 wiederherstellen und die Kompatibilitätsstufe darauf ausführen (Sie finden sie in der Datenbankoption). Befolgen Sie für SQL Server-Anmeldungen die Anweisungen unter dem folgenden Link .

Wenn dies abgeschlossen ist, müssen Sie jetzt auf SQL Server 2012 migrieren, indem Sie dieselben Schritte von dem Server wiederholen, auf den Sie die erste Migration durchgeführt haben.

Ahmad Abuhasna
quelle
0

Zunächst stimme ich zu, dass Sie nicht direkt von 2000 auf 2012 migrieren sollten. Ich denke, dieser Prozess wurde gut abgedeckt. Ich wollte vorschlagen, dass Sie sicher herausfinden, ob jemand die Datenbanken verwendet und wofür er sie verwendet. Es kann sein, dass sie nicht verwendet werden. Es passiert und wenn das der Fall ist, dann haben Sie keine Sorgen. Es kann sein, dass das Hinzufügen von 2 oder 3 Tabellen und Daten (für 2000 verwenden Sie bcp, wenn Sie die Daten für eine einzelne Tabelle einfach und zuverlässig herausholen möchten) zu einer vorhandenen 2012-Datenbank den Anforderungen der Benutzer entspricht. Wenn Sie dies tun, erstellen Sie die neuen Tabellen in einer 2012-Datenbank und geben Sie die Daten aus, die Sie für csv benötigen. Sie können sie wieder einbinden, wenn Sie möchten. Wenn Sie mehr als eine oder zwei Tabellen migrieren müssen, ist die zweistufige Migration der einfachste, sicherste und beste Weg. Don'

dkh63493
quelle
Sie sollten wissen, dass das Schemaskript im Jahr 2000 nicht 100% genau war. Ich erinnere mich, dass ich das Skript immer bearbeiten musste.
dkh63493