none
SQL Express 2008 files an SQL Express 2005 Anhängen RRS feed

  • Frage

  • Hallo Forum,

    ich habe bei mir lokal einen Sql Server Express 2008.

    Jetzt habe ich daraus zb test.mdf und test_log.ldf herauskopiert.

    Ich möchte diese Files jetzt an einen 2005 Express Server anhängen.

    Geht das?

    Gruß

    Michael

    Freitag, 21. Mai 2010 20:15

Antworten

  • Hallo Michael,

    nein, das ist so nicht möglich, Datenbanken sind abwärts- aber nicht aufwärtskompatibel, will heissen, man kann 2005 Datenbank in 2008 anhängen, aber eben nicht umgekehrt.

    Wenn Du die Datenbank im SQL Server 2005 benötigst und unter der Voraussetzung, das keine Features verwendet wurden, die es erst ab 2008 gibt (wie Spatial Data Types), kannst Du folgendes machen:

    - In SSMS 2008 DB markieren, Rechte-Maus => Tasks => Skript generieren und dem Wizard folgen. Dabei die Option "Skripterstellung für Serverversion" auf "SQL Server 2005" und "Skript für Daten" = "Ja" setzen. So wird ein kompletes Script mit den Create Statements für die Objekte und Insert Statements für die Daten generiert, die Du dann auf SQL Server 2005 ausführen kannst, um die Datenbank neu zu erstellen.

    - Eine andere Option wäre SSIS = SQL Server Integration Services zu verwenden, um die Objekte von 2008 nach 2005 zu übertragen. Wenn Du aber nur die Express Edition hast, bei der es SSIS nicht gibt, und nicht noch über eine z.B. Developer Edition verfügst, dann fällt die Option aus.


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    • Bearbeitet Olaf HelperMVP Freitag, 21. Mai 2010 21:42 Hinweis wegenn fehlenden SSIS in Express Edition
    • Als Antwort markiert Maxim Khaikine Donnerstag, 27. Mai 2010 15:38
    Freitag, 21. Mai 2010 20:57
  • Hallo Michael,

    es ist naturgemäß, das aus ein paar MB Datenbank ein paar 100 MB Script entsteht, neben den Nettodaten kommt auch ein entsprechender Anteil für die CREATE / INSERT Statements zusammen.

    Das Script besteht aus mehreren Batches, die durch GO getrennt sind. Und da es eine neue Datenbank ist, ist es auch nicht zwingend notwendig, alle INSERT Statements auf einmal in einer Transaktion durchzuführen, Schritt-für-Schritt geht auch und ist in dem Fall unkritisch.

    Was Du also machen kannst ist Teile (Batches) zu markieren und dann nur diese markierten Teile "! Ausführen" zu lassen; dann wird nur der markierte Teil ausgeführt.

    Eine andere Möglichkeit ist nur die CREATE Scripte auszuführen und die Daten aus der Quelle kopieren zu lassen. Das geht zum Beispiel mit dem Import/Export Assistenten, den es AFAIK auch im SSMS Express gibt, oder manuell indem man einen LinkekServer anlegt und dann über eigene SQL Scripte die Daten rüber kopiert; bei vielen Tabellen ist das aber eine gewisse Fleißarbeit.


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Donnerstag, 27. Mai 2010 19:26

Alle Antworten

  • Hallo Michael,

    nein, das ist so nicht möglich, Datenbanken sind abwärts- aber nicht aufwärtskompatibel, will heissen, man kann 2005 Datenbank in 2008 anhängen, aber eben nicht umgekehrt.

    Wenn Du die Datenbank im SQL Server 2005 benötigst und unter der Voraussetzung, das keine Features verwendet wurden, die es erst ab 2008 gibt (wie Spatial Data Types), kannst Du folgendes machen:

    - In SSMS 2008 DB markieren, Rechte-Maus => Tasks => Skript generieren und dem Wizard folgen. Dabei die Option "Skripterstellung für Serverversion" auf "SQL Server 2005" und "Skript für Daten" = "Ja" setzen. So wird ein kompletes Script mit den Create Statements für die Objekte und Insert Statements für die Daten generiert, die Du dann auf SQL Server 2005 ausführen kannst, um die Datenbank neu zu erstellen.

    - Eine andere Option wäre SSIS = SQL Server Integration Services zu verwenden, um die Objekte von 2008 nach 2005 zu übertragen. Wenn Du aber nur die Express Edition hast, bei der es SSIS nicht gibt, und nicht noch über eine z.B. Developer Edition verfügst, dann fällt die Option aus.


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    • Bearbeitet Olaf HelperMVP Freitag, 21. Mai 2010 21:42 Hinweis wegenn fehlenden SSIS in Express Edition
    • Als Antwort markiert Maxim Khaikine Donnerstag, 27. Mai 2010 15:38
    Freitag, 21. Mai 2010 20:57
  • Am 21.05.2010 22:57, schrieb Olaf Helper:
     
    > nein, das ist so nicht möglich, Datenbanken sind abwärts- abe
    r nicht
    > aufwärtskompatibel, will heissen, man kann 2005 Datenbank in 2008
    anhängen, aber
    > eben nicht umgekehrt.
     
    Dann sind sie doch *aufwärtskompatibel*. ;)
     
    Servus
    Winfried
    --
    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
    Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
    Access-Stammtisch: http://www.access-muenchen.de
     
     
    Freitag, 21. Mai 2010 22:25
  • Hallo Winfried,

    ich neige dazu, das eine oder andere durcheinander zu Würflen und Links mit Rechts zu vertauschen, aber wenn ich mich vor der Kosumierung meines Morgenskaffee nicht allzusehr irre, ist es abwärtskompatibel. Man kann ältere Versionen (was abwärts wäre) von Datenbanken mit neueren Versionen öffnen.

    Aber wie gesagt, ich bin belehrig und gerade auch noch nicht so richtig wach; der Kaffee läuft noch ... ;-)


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Samstag, 22. Mai 2010 05:56
  • Am 22.05.2010 07:56, schrieb Olaf Helper:
     
     
     
    > ich neige dazu, das eine oder andere durcheinander zu Würflen und
    > Links mit Rechts zu vertauschen, aber wenn ich mich vor der
    > Kosumierung meines Morgenskaffee nicht allzusehr irre,
    > ist es abwärtskompatibel. Man kann ältere
    > Versionen (was abwärts wäre) von Datenbanken mit neueren Vers
    ionen
    > öffnen.
     
     
    Ich zitiere:
     
    > nein, das ist so nicht möglich, Datenbanken sind abwärts- abe
    r nicht
    > aufwärtskompatibel, will heissen, man kann 2005 Datenbank in 2008
     
    > anhängen, aber eben nicht umgekehrt.
     
    Was denn nun? Rauf oder runter? :)
     
     
    > Aber wie gesagt, ich bin belehrig und gerade auch noch nicht so richtig
    wach;
    > der Kaffee läuft noch ... ;-)
     
     
    Hehe, der Kaffee ist schon drin. ;)
     
     
    Servus
    Winfried
    --
    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
    Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
    Access-Stammtisch: http://www.access-muenchen.de
     
     
    Samstag, 22. Mai 2010 08:53
  • Super danke für die Info!

    Der Hinweis mit der Script erzeugung hat geholfen

    Donnerstag, 27. Mai 2010 15:39
  • OK das Skript konnte ich generieren, ist jetzt 183 MB groß,

    soweit so gut, nur wenn ich es jetzt auf dem SQL Express 2005 ausführen möchte bekomme ich immer ein "Out of Memory Exception"

     

    hast du einen Ahnung wie man das Umgehen kann?

    Ich mach auf der Maschine mit dem 2005 einfach doppel Click auf das Script und dann in der SSMS Ausführen.

    Gruß

    Michael

    Donnerstag, 27. Mai 2010 16:11
  • Hallo Michael,

    es ist naturgemäß, das aus ein paar MB Datenbank ein paar 100 MB Script entsteht, neben den Nettodaten kommt auch ein entsprechender Anteil für die CREATE / INSERT Statements zusammen.

    Das Script besteht aus mehreren Batches, die durch GO getrennt sind. Und da es eine neue Datenbank ist, ist es auch nicht zwingend notwendig, alle INSERT Statements auf einmal in einer Transaktion durchzuführen, Schritt-für-Schritt geht auch und ist in dem Fall unkritisch.

    Was Du also machen kannst ist Teile (Batches) zu markieren und dann nur diese markierten Teile "! Ausführen" zu lassen; dann wird nur der markierte Teil ausgeführt.

    Eine andere Möglichkeit ist nur die CREATE Scripte auszuführen und die Daten aus der Quelle kopieren zu lassen. Das geht zum Beispiel mit dem Import/Export Assistenten, den es AFAIK auch im SSMS Express gibt, oder manuell indem man einen LinkekServer anlegt und dann über eigene SQL Scripte die Daten rüber kopiert; bei vielen Tabellen ist das aber eine gewisse Fleißarbeit.


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Donnerstag, 27. Mai 2010 19:26