Ich habe eine Datenbank auf einer SQL Server 2012-Instanz, die ich auf einen 2008-Server kopieren möchte. Der Server 2008 kann keine von einem Server 2012 erstellten Sicherungen wiederherstellen (ich habe es versucht).
Ich kann 2012 keine Optionen zum Erstellen eines 2008-kompatiblen Backups finden. Vermisse ich etwas?
Gibt es eine einfache Möglichkeit, das Schema und die Daten in ein versionsunabhängiges Format zu exportieren, das ich dann in 2008 importieren kann?
Die Datenbank verwendet keine 2012-spezifischen Funktionen. Es enthält Tabellen, Daten und gespeicherte Prozeduren.
Folgendes habe ich bisher versucht
Ich habe Tasks → Generate Scripts auf dem 2012-Server ausprobiert und konnte das Schema (einschließlich gespeicherter Prozeduren) als SQL-Skript generieren. Dies beinhaltete jedoch keine der Daten.
Nachdem ich dieses Schema auf meinem 2008-Computer erstellt hatte, konnte ich den Assistenten "Daten exportieren" auf dem 2012-Computer öffnen. Nachdem ich 2012 als Quellcomputer und 2008 als Zielcomputer konfiguriert hatte, wurde mir eine Liste von Tabellen angezeigt, die ich verwenden konnte könnte kopieren. Ich habe alle meine Tabellen (300+) ausgewählt und durch den Assistenten geklickt. Leider verbringt es einige Zeit damit, Skripte zu erstellen, und schlägt dann mit Fehlern wie "Fehler beim Einfügen in die schreibgeschützte Spalte 'FOO_ID'" fehl.
Ich habe auch den "Copy Database Wizard" ausprobiert, der behauptete, "von 2000 oder später nach 2005 oder später" kopieren zu können. Es gibt zwei Modi:
"Trennen und Anhängen", was mit Fehler fehlgeschlagen ist:
Message: Index was outside the bounds of the array. StackTrace: at Microsoft.SqlServer.Management.Smo.PropertyBag.SetValue(Int32 index, Object value) ... at Microsoft.SqlServer.Management.Smo.DataFile.get_FileName()
SQL Management Object Methode, die mit Fehler fehlgeschlagen ist
Die Eigenschaft IsFileStream kann nicht gelesen werden. Diese Eigenschaft ist in SQL Server 7.0 nicht verfügbar. "
Antworten:
Klicken Sie im 2012 SQL Management Studio mit der rechten Maustaste auf die Datenbank und wählen Sie "Aufgaben -> Skripte erstellen". Klicken Sie am Begrüßungsbildschirm vorbei und wählen Sie "Skript gesamte Datenbank und alle Datenbankobjekte". Klicken Sie auf der Seite "Angeben, wie Skripts gespeichert werden sollen" auf "Erweitert". Ändern Sie unter "Allgemein" auf der Popup-Eigenschaftenseite "Datentypen in Skript" von "Nur Schema" in "Schema und Daten" und "Skript für Serverversion" von "2012" in "2008".
Ich musste dann eine Möglichkeit finden, den Start dieser massiven SQL-Datei zu bearbeiten, um zu optimieren, wie die Datenbank erstellt werden würde - siehe hierzu q: https://stackoverflow.com/questions/102829/best-free-text-editor -unterstützung-von-mehr-als-4gb-dateien
Und schließlich musste ich einen Weg finden, um das SQL-Skript auszuführen, das zu groß war, um es in SQL Management Studio zu öffnen - siehe hierzu q: https://stackoverflow.com/questions/431913/how-do-you-run- a-300mb-ms-sql-sql-datei
quelle
Verwenden Sie für SQL-Migrationen den kostenlosen und quelloffenen SQL-Datenbankmigrationsassistenten.
Ich hatte eine 5 GB Datenbank mit ein paar ~ 10 Millionen Datensätzen und habe die Route über Generate Script ausprobiert und dann mit sqlcmd.exe ausgeführt. Erstens funktionierte das generierte Skript nicht immer richtig. Zweitens kann sqlcmd.exe auch bei großen Dateien fehlschlagen und sich über den verfügbaren Speicher beschweren. osql.exe funktioniert, benötigt aber nur Ewigkeiten (und hat dieselben Befehlszeilenargumente).
Dann bin ich auf ein wunderbares Tool zum Migrieren von SQL Server zu SQL Azure-Datenbanken gestoßen. Dies funktioniert auch für SQL Server nach SQL Server, wenn Sie beispielsweise eine SQL 2012-Datenbank nach 2008 R2 migrieren möchten. Es verwendet bcp.exe, das Massenkopien verwendet. Es gibt eine GUI- und eine Befehlszeilenversion (Batch) und es ist Open Source. Siehe http://sqlazuremw.codeplex.com/ . In meinem Fall dauerte die Operation 16 Minuten.
In einem erweiterten Bildschirm können Sie auswählen, dass Ihr Ziel SQL Server und nicht SQL Azure ist.
quelle
Ich bin neu in SQL, habe es aber geschafft, von 2012 auf 2008 zu migrieren. Dazu habe ich das SQL-Dienstprogramm zum Importieren und Exportieren verwendet. Ich habe den SQL 2012-Server und die zu migrierende Datenbank und schließlich den Server 2008 ausgewählt und eine neue Datenbank als Zieldatenbank erstellt. Es funktionierte.
quelle
Probieren Sie die APEXSQL- Tools aus. Sie haben ein Tool, das die Datenbank und die Daten auch skriptet.
quelle
Das Problem ist, dass die ID-Spalten nicht eingefügt werden können.
quelle
Ich habe Richs Lösung https://superuser.com/a/469597/312310 oben befolgt und es hat großartig funktioniert! Danke - ich kann hier noch nicht abstimmen!
Die zusätzlichen Schritte, die ich machen musste, um dies zum Laufen zu bringen, sind:
Ändern Sie die logischen Dateinamen und stellen Sie sicher, dass der Pfad korrekt ist. Ich musste auch den generierten Protokollnamen ändern, da sonst versucht wurde, die MDF-Datei mit dem Protokoll zu überschreiben, und dann die Fehlermeldung https://stackoverflow.com/questions/7534664/sql-server-script-error-database-is- ausgegeben wurde. bereits in Benutzung
Ich musste den generierten Abschnitt auskommentieren und anschließend die Benutzerberechtigungen manuell hinzufügen
Ran it up, und siehe da, ich kann jetzt meine neue Umbraco 7.1.2-Datenbank auf meinem Webserver wiederherstellen, der nur SQL Server 2008 R2 enthält!
quelle
Schauen Sie sich xSQL Schema Compare und xSQL Data Compare an . Sie können zuerst das Schema mit dem Schemaabgleich synchronisieren und dann die Daten kopieren.
Haftungsausschluss: Ich bin mit xSQL verbunden.
quelle