Wie kann eine SQL Server-Datenbanksicherungsdatei einer höheren Version auf einem SQL Server einer niedrigeren Version wiederhergestellt werden?
Mit SQL Server 2008 R2 (10.50.1600) habe ich eine Sicherungsdatei erstellt und möchte sie jetzt auf dem SQL Server 2008 (10.00.1600) meines Live-Servers wiederherstellen .
Beim Versuch, die Sicherung auf SQL Server 2008 wiederherzustellen, wird ein Fehler ausgegeben, z. Restore Failed
B.:
Die Datenbank wurde auf einem Server mit Version 10.50.1600 gesichert. Diese Version ist nicht mit diesem Server kompatibel, auf dem Version 10.00.1600 ausgeführt wird.
Wie stelle ich die Sicherungsdatei auf diesem Server wieder her?
sql-server
Oreo
quelle
quelle
Antworten:
Nein, ein Downgrade einer Datenbank ist nicht möglich. 10.50.1600 ist die SQL Server 2008 R2- Version. Es gibt absolut keine Möglichkeit, diese Datenbank wiederherzustellen oder an die SQL Server 2008-Instanz anzuhängen, auf der Sie wiederherstellen möchten (10.00.1600 ist SQL Server 2008). Ihre einzigen Optionen sind:
quelle
Sie können die als Export Data-Tier Application bezeichnete Funktion verwenden, die eine
.bacpac
Datei generiert , die aus einem Datenbankschema und Daten besteht.Auf dem Zielserver können Sie die Option Datenebenenanwendung importieren verwenden, mit der eine neue Datenbank aus einer zuvor erstellten
.bacpac
Datei erstellt und gefüllt wirdWenn Sie nur das Datenbankschema übertragen möchten, können Sie Datenebenenanwendung extrahieren zum Erstellen von Dateien und Datenebenenanwendung zum Bereitstellen des erstellten Datenbankschemas bereitstellen verwenden .
Ich habe diesen Prozess auf verschiedenen Versionen von SQL Server von SQL 2014 bis SQL 2012 und von SQL 2014 bis SQL 2008R2 ausprobiert und gut funktioniert.
quelle
sqlpackage.exe
Befehlszeile automatisieren . Google für mehr.Wird nicht unbedingt funktionieren
Sichern / Wiederherstellen - funktioniert nicht, wenn das Ziel eine frühere MS SQL-Version ist.
Datenbank kopieren - funktioniert nicht, wenn das Ziel SQL Server Express ist: "Der Zielserver kann keine Express-Instanz von SQL Server 2005 oder höher sein."
Datenimport - Kopiert das Schema nicht.
Wird funktionieren
Skriptgenerierung - Aufgaben -> Skripte generieren . Stellen Sie sicher, dass Sie die gewünschte SQL Server-Zielversion auf der Seite Set Scripting Options -> Advanced festlegen. Dort können Sie auch auswählen, ob Schema, Daten oder beides kopiert werden sollen. Beachten Sie, dass Sie im generierten Skript möglicherweise den Ordner DATA für die mdf / ldf-Dateien ändern müssen, wenn Sie von non-express zu express oder umgekehrt wechseln.
Microsoft SQL Server Database Publishing Services - wird mit SQL Server 2005 und höher geliefert, denke ich. Laden Sie die neueste Version von hier . Voraussetzungen:
sqlncli.msi
/sqlncli_x64.msi
/sqlncli_ia64.msi
,SQLServer2005_XMO.msi
/SQLServer2005_XMO_x64.msi
/SQLServer2005_XMO_ia64.msi
( hier herunterladen ).quelle
Hier sind meine 2 Cent für verschiedene Optionen, um dies zu vervollständigen:
Tools von Drittanbietern : Der wahrscheinlich einfachste Weg, die Aufgabe zu erledigen, besteht darin, eine leere Datenbank in einer niedrigeren Version zu erstellen und dann die Sicherung mithilfe von Tools von Drittanbietern zu lesen und die neu erstellte Datenbank mit der Sicherung zu synchronisieren.
Red Gate ist eines der beliebtesten, aber es gibt viele andere wie ApexSQL Diff , ApexSQL Data Diff , Adept SQL , Idera …. All dies sind Premium-Tools, aber Sie können die Arbeit im Testmodus erledigen;)
Generieren von Skripten : Wie bereits erwähnt, können Sie die Struktur und Daten von Skripten immer mit SSMS ausführen, müssen jedoch die Ausführungsreihenfolge berücksichtigen. Standardmäßig sind Objektskripte nicht korrekt sortiert und Sie müssen sich um die Abhängigkeiten kümmern. Dies kann ein Problem sein, wenn die Datenbank groß ist und viele Objekte enthält.
Import- und Exportassistent : Dies ist keine ideale Lösung, da nicht alle Objekte, sondern nur Datentabellen wiederhergestellt werden. Sie können ihn jedoch bei Bedarf für schnelle und fehlerhafte Korrekturen in Betracht ziehen.
quelle
Sie können die in der oberen Version erstellte Datenbank (oder das Anhängen) nicht in der unteren Version wiederherstellen. Die einzige Möglichkeit besteht darin, ein Skript für alle Objekte zu erstellen und das Skript zum Generieren der Datenbank zu verwenden.
Ja, jetzt haben Sie das Skript mit Schema und Daten der Datenbank erstellen erstellt.
quelle
Eine andere Möglichkeit, dies zu tun, ist die Verwendung der Funktion "Datenbank kopieren":
Suchen Sie, indem Sie mit der rechten Maustaste auf die Quellendatenbank> "Aufgaben"> "Datenbank kopieren" klicken.
Sie können die Datenbank in eine niedrigere Version der SQL Server-Instanz kopieren. Dies funktionierte für mich von SQL Server 2008 R2 (SP1) - 10.50.2789.0 bis Microsoft SQL Server 2008 (SP2) - 10.0.3798.0
quelle
Sie können dies versuchen.
quelle
Gehen Sie zu Aufgabe-> Skripte generieren ...
In Erweitern in „Typen von Daten für Skript“ wählen
"Schema and data"
und versuchen , dieses Skript in Ihrer älteren Version zu laufen.quelle
Es ist nicht schön, aber so habe ich es gemacht, vorausgesetzt, Sie haben diese Option auf Ihrer SQL 2008 R2-Installation installiert.
1) Klicken Sie mit der rechten Maustaste auf Datenbank in SQL Server 2008 R2 "Aufgaben". Wählen Sie im Assistenten "Skripte generieren" aus und wählen Sie im ersten Schritt die gesamte Datenbank und die Objekte aus. Im Schritt "Skriptoptionen festlegen" sollte die Schaltfläche "Erweitert" angezeigt werden. Wählen Sie diese aus und stellen Sie sicher, dass Sie "Skript für Serverversion" = SQL Server 2008 "und nicht R2-Version auswählen. Dies ist ein entscheidender Schritt, da" Daten importieren ". an sich bringt nicht alle Primärschlüssel, Constrianten und andere Objekte wie gespeicherte Prozeduren mit. "
2) Führen Sie das auf der neuen Installations- oder Datenbankinstanz SQL Express oder SQL Server 2008 generierte SQL-Skript über das Abfragefenster aus oder öffnen Sie das gespeicherte SQL-Skript und führen Sie es aus. Die neue Datenbank sollte angezeigt werden.
3) Klicken Sie nun mit der rechten Maustaste auf die neue Datenbank und wählen Sie "Aufgaben". "Daten importieren". Wählen Sie die Quelle als R2-Datenbank und das Ziel als neue Datenbank. "Daten aus einer oder mehreren Tabellen oder Ansichten kopieren", aktivieren Sie das obere Kontrollkästchen, um alle Tabellen auszuwählen, und führen Sie dann im nächsten Schritt das Paket aus, und Sie sollten alles auf einer älteren Version haben. Dies sollte auch für die Rückkehr zu einer Version von 2005 funktionieren. Hoffe das hilft jemandem.
quelle
Sie können BCP für kleine Tabellen verwenden.
BCP OUT Befehl: -
BCP IN-Befehl: - Tabellenstruktur für Invoicescopy1 erstellen.
quelle
Ich weiß, dass dies ein alter Beitrag ist, aber es kann hilfreich sein, zu wissen, dass der Azure-Migrationsassistent (verfügbar in Codeplex - kann nicht mit Codeplex verknüpft werden, da Codeplex dies derzeit tut) dies problemlos erledigt.
quelle
Sie müssten die Import / Export-Assistenten in SSMS verwenden, um alles zu migrieren
Es ist kein "Downgrade" durch Sichern / Wiederherstellen oder Trennen / Anhängen möglich. Deshalb müssen Sie Folgendes tun:
quelle
Sie können ein Skript über das Menü Aufgabe generieren
Für detaillierte Referenz
So migrieren Sie eine SQL Server-Datenbank auf eine niedrigere Version
quelle