PDA

Vollständige Version anzeigen : MS SQL-Server: Datenbank von 2008 auf 2005 oder 2000=MSDE


mupan
09.10.2009, 12:27
Wer eine 2008er-Datenbank etwa als .bak geliefert bekommt und nur SQL Server 2005 (Express) oder MSDE hat, bittet entweder den Absender, die Datenbank für ihn zu scripten in der unten beschriebenen Weise, oder er besorgt sich von http://www.microsoft.com/express/sql/download/ den SQL Server 2008 Express nebst Management Studio 2008, installiert beides, restore't die empfangene .bak in den 2008 Express und erzeugt sich selbst eine 2005er / 2000er Datenbank.

Vorgehen:

Das Management Studio 2008 [Express] mit dem 2008er Server verbinden, die Datenbank rechtsklicken, Tasks / Generate Scripts auswählen, die Datenbank erneut auswählen und Script all objects in the selected database anchecken.

Folgende Parameter setzen:

Script Database Create auf True
Script Data auf True
Script for Server Version auf SQL Server 2005 oder SQL Server 2005

Das Script in ein File schreiben lassen, dieses auf den Ziel-Rechner übertragen.

Mich auf den Ziel-SQL-Server 2005 verbinden, hier das eben erzeugte Script öffnen, die Pfade für .mdf und .ldf anpassen, und Execute.

mupan
12.10.2009, 09:57
Ich meine natürlich Script for Server Version auf SQL Server 2005 oder SQL Server 2000

SWR
13.10.2009, 00:28
Wobei man noch erwähnen sollte, dass evtl. bereits verwendete neue Datentypen der 2008er-Version ein "Execute" des erzeugten Scripts in einer niedrigeren Serverversion verhindern.

Beispiel: Datentyp "date" in 2008 wäre in der 2005er Version "datetime" - da müsste man ggfls. ebenfalls auch am Script Hand anlegen.

Gruß
Stephan

mupan
13.10.2009, 08:39
Das hätte mich jetzt sehr gewundert, weil wir jede Menge date- bzw. datetime-Felder haben und mir die keinen Fehler geworfen haben. In meinem (umfangreichen) Testscript ist als Datentyp datetime angegeben. Kann es sein, dass du in deinem Test vergessen hast, die Zielplattform einzustellen, mit Script for Server Version? Oder gar nicht getestet hast?

Gruß
mupan

SWR
13.10.2009, 09:45
Wenn in der 2008er-Version bereits "date" oder andere neue Datentypen, die es abwärts nicht gibt, vorhanden sind, versagt die Methode. Ich hatte schon ausgiebig getestet, aber aus der Erinnerung vielfältiger Tests heraus vergessen zu erwähnen bzw. oben falsch erwähnt, dass dann "Execute" des erzeugten Scripts fehlschlägt anstatt korrekter geschrieben zu haben, dass dann bereits der Assistent, wenn abwärts gescriptet werden soll, eine Prüfung vornnimmt und anschließend abbricht, sodass es erst gar nicht zu einem Script kommt. Hand anlegen ist also für den Fall und für denjenigen angesagt, der es bereits mit neueren Datentypen zu tun bekommt (z. B. "date" in 2008). Darauf wollte ich lediglich hinweisen (ist ja selbstverständlich, wozu eigentlich).

Gruß
Stephan

mupan
20.10.2009, 09:07
Hallo Stephan, ja, find ich auch selbstverständlich. Finde das jetzt eher schwach von Microsoft, aber bin schon froh, dass der Assi so weit gediehen ist, wie er ist. Das Unvermögen des Skripts zu automatischer Abhilfe wird also bereits vom Assi in SQL Server Management Studio 2008 abgefangen. So wird der Skripter genötigt, mit seinen SQL-Server-(Management-Studio-)2008-Mitteln für eine Lösung zu sorgen, die ja je nach Ausgangslage im Datentyp-Ändern, Vereinigen in einer neuen Spalte, Löschen unwichtiger Spalten und einigen weiteren Varianten liegen kann. Das finde ich sachgerecht und nebenbei wohltuend anders als das Verhalten der Büroanwendungen von M$ und anderer Hersteller, die gern so tun, als sei alles in Ordnung, und wenn man nicht genau prüft und hinschaut, hat z.B. Excel beim Import einer .123 oder .dbf die Kalenderdaten völlig vermurkst.