it-swarm.com.de

Wiederherstellen einer SQL Server 2012-Datenbank in SQL Server 2008 R2

Ich versuche, die Sicherung von SQL Server 2012 auf SQL Server 2008 R2 wiederherzustellen, und es wird ein Fehler angezeigt 

Die angegebene Umwandlung ist ungültig. (SqlManagerUI)

Wenn Sie eine Lösung dafür haben, geben Sie bitte einen Kommentar an

vielen Dank. 

30
user2742047

ANMERKUNG, EINIGE DER OBEN ANTWORTEN SIND MASSIV DATUM! DAS KANN DURCHGEFÜHRT WERDEN UND ALLE INNERHALB DES SQL SERVER MANAGEMENT STUDIO (SQL MS)


Es gibt zahlreiche Methoden, mit denen Sie eine Datenbank "downgraden" können, aber eine, die ich kürzlich gefunden habe und die meines Erachtens in früheren Versionen von SQL MS 2012 nicht gefunden wurde, ist der Assistent zum Kopieren von Datenbanken. So kopieren Sie eine Datenbank von einer 2012-Serverinstanz in eine 2008 R2-Instanz:

  1. Klicken Sie in der 2012-Instanz mit der rechten Maustaste auf die Datenbank, die Sie kopieren möchten, und wählen Sie "Aufgaben"> "Datenbank kopieren ..." aus.

  2. "Willkommen beim Assistenten zum Kopieren von Datenbanken" klicken Sie auf [Weiter].

  3. "Quellserver auswählen": Legen Sie den "Quellserver" als 2012-Instanz (oder Serverversion mit höherer Version) und die entsprechende Authentifizierung fest. Weiter klicken]. [Hinweis. Die Server Agent-Dienste müssen ausgeführt werden.]

  4. "Wählen Sie einen Zielserver aus:" Legen Sie den "Zielserver" als 2008 R2 (oder eine Instanz mit einer niedrigeren Version) fest, und legen Sie die entsprechende Authentifizierung fest. Weiter klicken]. [Hinweis. Die Server Agent-Dienste müssen ausgeführt werden.]

  5. "Wählen Sie die Übertragungsmethode aus". Wählen Sie für dieses Beispiel "SQL-Verwaltungsobjektmethode verwenden" aus und klicken Sie auf [Weiter].

  6. Wählen Sie, um die erforderlichen Datenbanken zu verschieben oder zu kopieren, klicken Sie auf [Weiter].

  7. Konfigurieren Sie den Zieldatenbankpfad und die logischen Namen usw. Wählen Sie die erforderliche Option, wenn die Datenbank vorhanden ist. Weiter klicken].

  8. Konfigurieren Sie das Integrationsdienstepaket und klicken Sie auf [Weiter].

  9. Wählen Sie für dieses Beispiel die Option "Sofort ausführen" für die Optionen "Paket planen" aus und klicken Sie auf [Weiter].

  10. Klicken Sie auf "Fertig stellen", um das Paket auszuführen und die "heruntergestufte" Datenbank zu erstellen. 

Sie sind fertig, glückliche Tage. :]


Eine andere Methode, die ich gefunden habe, war die SQL-Datenbankmigration Wizard, die von Microsoft erstellt wurde und von der ich glaube (ich weiß nicht), dass der obige Assistent erstellt wurde. Holen Sie es hier http://sqlazuremw.codeplex.com/ . Um dieses Paket zum Migrieren einer Datenbank von SQL Server 20012 nach 2008 R2 zu verwenden, können Sie Folgendes tun: 

Hinweis. Microsoft hat nun SQLAzureMW von Codeplex entfernt. Ich habe es persönlich zur Verfügung gestellt hier

  1. Führen Sie SQLAzureMW.exe aus.

  2. Wählen Sie das Optionsfeld Analysieren/Migrieren rechts im Hauptfenster aus.

  3. Wählen Sie den Zielserver als "Neueste Version der SQL-Datenbank (V12)" aus. Weiter klicken].

  4. Stellen Sie eine Verbindung zur SQL Server 2012-Instanz her. Der Servername für meinen Computer lautet „VAIOE\SQLSERVER2012“. Verwenden Sie die Windows-Authentifizierung. Wählen Sie in den Datenbankoptionen „Master DB (Alle Datenbanken auflisten)“ und „Anmeldeinformationen speichern“. Klicken Sie auf [Connect].

  5. Wählen Sie die erforderliche Datenbank für die Migration aus [GVH-Berichtsdatenbank jetzt verwenden]. Weiter klicken].

  6. Wählen Sie "Alle Datenbankobjekte schreiben".

  7. Klicken Sie auf [Advance] und ändern Sie die folgenden Optionen:

ein. Stellen Sie unter Allgemein "Zielserver" auf "SQL Server" ein. 

b. Unter "Table/View Options" setzen Sie "Script Table/Data" auf "Table Schema with Data". Setzen Sie "Gespeicherte Datenbankmodul-Prozeduren" auf "True". Setzen Sie „Sicherheitsfunktionen“, „Gespeicherte Sicherheitsprozeduren“ und „Systemfunktionen“ auf „Wahr“. 

OK klicken]. Weiter klicken].

  1. Überprüfen Sie Ihre Auswahl. Weiter klicken].

  2. Sie werden aufgefordert, "Skript zur Erstellung von Skripts bereit?". Klicken Sie auf [Ja]. Dadurch wird die Skriptgenerierung gestartet. Sobald dies erledigt ist, klicken Sie auf [Weiter].

  3. Nun erhalten Sie einen weiteren Verbindungsdialog. Wählen Sie dieses Mal die Datenbank auf dem Zielserver (der SQL Server 2008 R2-Instanz) aus. Wählen Sie die Master-Datenbank aus, damit Sie die Ziel-DB auswählen können. Klicken Sie auf [Connect].

  4. Nun ist es wahrscheinlich, dass Sie in eine neue Datenbank migrieren möchten. Klicken Sie daher auf [Datenbank erstellen].

  5. Geben Sie einen Datenbankzielnamen ein und belassen Sie die "Kollatierung" als "". Dies betrifft uns nicht. Klicken Sie auf [Datenbank erstellen]. Weiter klicken].

  6. Sie werden nun aufgefordert, "Skript gegen Zielserver ausführen?", Klicken Sie auf [Ja].

  7. Das wird jetzt losgehen und jede Menge Sachen erledigen und das Schema mithilfe des generierten Skripts einrichten. Im Gegensatz zur vorherigen Methode werden die Daten jedoch mithilfe von BCP massenweise geladen, was unglaublich schnell ist. All dies geschieht auch intern, so dass keine umfangreichen SQL-Skriptdateien usw. erzeugt werden. 

  8. Klicken Sie auf [Beenden]. 

Du bist fertig. Wenn Sie jetzt Management Studio öffnen und eine Verbindung zu den SQL Server 2012- und 2008 R2-Instanzen herstellen, mit denen wir gerade zusammengearbeitet haben, können Sie feststellen, dass das Schema für die Quelldatenbank 2012 mit der soeben erstellten Zieldatenbank übereinstimmt. 


Die beiden obigen Prozesse sind nahezu identisch und bieten die gleiche Funktionalität. Letzteres würde ich nicht durchführen, wenn Sie nicht ausdrücklich zu Azure migrieren müssen oder Methode 1 für Sie fehlschlägt.

Ich hoffe das hilft jemandem.

36
MoonKnight

Klicken Sie mit der rechten Maustaste auf Ihre Datenbank und wählen Sie Aufgaben -> Skripts generieren 

Wählen Sie die Dinge aus, die Sie wiederherstellen möchten, oder lassen Sie die gesamte Datenbank standardmäßig auswählen. 

Klicken Sie nun auf Weiter -> Klicken Sie auf Erweitert und wählen Sie "Skript für Server-Version" für die "SSMS-Version", die Sie wie 2008 oder 2008 R2 oder eine andere wiederherstellen möchten.

wählen Sie auch "Datentyp für Skript" bis "Schema und Daten".

Führen Sie schließlich diese .sql-Datei auf dem Ziel ssms aus und ändern Sie den Datenbanknamen in der ersten Zeile Datenbank verwenden

wenn die Datenbank nicht vorhanden ist, erstellen Sie eine, und wenn Sie bei der Ausführung des Skripts einen Fehler erhalten, führen Sie das Skript unter Verwendung des Schlüsselworts alter aus, um den Vorgang abzuschließen.

12
Dheeraj Sharma

Dies ist nicht möglich. Sie können NIEMALS von einer höheren Version auf eine niedrigere Version von SQL Server wiederherstellen. Die einzige Möglichkeit besteht darin, die Datenbank auszufiltern und dann die Daten über SSIS, BCP, Verbindungsserver oder das Skript zu übertragen

7
SQLMenace

An: Killercam. Vielen Dank für Ihre Lösungen. Ich habe die erste Lösung eine Stunde lang ausprobiert, aber für mich funktionierte das nicht.

Ich habe eine Methode zum Generieren von Skripts verwendet, um Daten von SQL Server 2012 nach SQL Server 2008 R2 zu verschieben.

Im 2012 SQL Management Studio

  1. Aufgaben -> Skripts generieren (Klicken Sie im ersten Bildschirm des Assistenten auf Weiter - möglicherweise Nicht anzeigen).
  2. Wählen Sie Skript gesamte Datenbank und alle Datenbankobjekte -> Weiter
  3. Klicken Sie auf die Schaltfläche [Erweitert] 3.1 Ändern Sie [Datentypen für Skript] von "Nur Schema" in "Schema und Daten" 3.2 Ändern Sie [Skript für Server-Version] "2012" in "2008".
  4. Beenden Sie die nächsten Schritte des Assistenten zum Erstellen der Skriptdatei
  5. Verwenden Sie sqlcmd, um die exportierte Skriptdatei in SQL Server 2008 R2 zu importieren 5.1 Öffnen Sie die Windows-Befehlszeile 5.2 Geben Sie [sqlcmd -S -i Pfad zu Ihrer Datei] ein (Beispiel: [sqlcmd -S localhost -i C:\mydatabase.sql])

Für mich geht das.

5
Hieu

Sie können keine Wiederherstellung von 2012 nach 2008 durchführen. Sie können ein Werkzeug wie red-gate SQL compare verwenden, um das Schema usw. zu kopieren (sofern nichts 2012 verwendet wird). Wenn Sie auch Daten zum Kopieren haben, können Sie ihr Data Compare - Tool verwenden, und ich denke, Sie erhalten eine 14-tägige kostenlose Testversion.

2
christiandev

Der einzige integrierte Weg zum " downgrade " einer Datenbank von einer SQL Server-Version zu einer niedrigeren ist der harte Weg: Skriptieren Sie die gesamte Datenbank aus, schema und data, und führen Sie dann das Skript auf der Zielserver. 

Das ist machbar, ist aber meistens brutal.

1
RBarryYoung

Hier ist eine weitere Option, die den Trick für mich gemacht hat: https://dba.stackexchange.com/a/44340

Dort habe ich Option B verwendet. Dies ist nicht meine Idee, daher geht der ursprüngliche Autor mit allen Mitteln einher. Ich füge es nur hier hinzu, da ich weiß, dass Links manchmal nicht funktionieren und es wird empfohlen, die ganze Geschichte zur Hand zu haben.

Nur ein Tipp von mir: Beheben Sie ggf. die Inkompatibilitäten des Schemas. Dann sollte das Eingießen der Daten ein Kinderspiel sein.


Option A: Datenbank aus dem Kompatibilitätsmodus heraus mit der Option "Skript generieren":

Hinweis: Wenn Sie eine Datenbank mit Schema und Daten ausrüsten, ist das Skript je nach Datengröße umfangreich und wird nicht von SSMS, sqlcmd oder osql (möglicherweise auch in GB) gehandhabt.

 enter image description here

Option B:

Zuerst sollten Sie Tabellen mit allen Indizes, FKs usw. zuerst herausskriptieren und leere Tabellen in der Zieldatenbank erstellen - Option mit SCHEMA ONLY (Keine Daten).

Verwenden Sie BCP, um Daten einzufügen

I. BCP die Daten mit dem folgenden Skript aus. Setzen Sie SSMS in den Textmodus und kopieren Sie die mit dem folgenden Skript generierte Ausgabe in eine Bat-Datei.

-- save below output in a bat file by executing below in SSMS in TEXT mode

-- clean up: create a bat file with this command --> del D:\BCP\*.dat 

select '"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\bcp.exe" ' /* path to BCP.exe */
    +  QUOTENAME(DB_NAME())+ '.' /* Current Database */
    +  QUOTENAME(SCHEMA_NAME(SCHEMA_ID))+'.'            
    +  QUOTENAME(name)  
    +  ' out D:\BCP\'  /* Path where BCP out files will be stored */
    +  REPLACE(SCHEMA_NAME(schema_id),' ','') + '_' 
    +  REPLACE(name,' ','') 
    + '.dat -T -E -SServerName\Instance -n' /* ServerName, -E will take care of Identity, -n is for Native Format */
from sys.tables
where is_ms_shipped = 0 and name <> 'sysdiagrams'                       /* sysdiagrams is classified my MS as UserTable and we dont want it */
/*and schema_name(schema_id) <> 'unwantedschema'    */                             /* Optional to exclude any schema  */
order by schema_name(schema_id)

II. Führen Sie die Bat-Datei aus, die die DAT-Dateien in dem von Ihnen angegebenen Ordner generiert.

III. Führen Sie unter dem Skript auf dem Zielserver erneut mit SSMS im Textmodus aus.

--- Execute this on the destination server.database from SSMS.

--- Make sure the change the @Destdbname and the bcp out path as per your environment.

declare @Destdbname sysname
set @Destdbname = 'destinationDB' /* Destination Database Name where you want to Bulk Insert in */
select 'BULK INSERT '
/*Remember Tables must be present on destination database */ 
+ QUOTENAME(@Destdbname) + '.' 
+ QUOTENAME(SCHEMA_NAME(SCHEMA_ID)) 
+ '.' + QUOTENAME(name) 
+ ' from ''D:\BCP\' /* Change here for bcp out path */ 
+ REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '') 
+ '.dat'' with ( KEEPIDENTITY, DATAFILETYPE = ''native'', TABLOCK )' 
+ char(10) 
+ 'print ''Bulk insert for ' + REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '') + ' is done... ''' 
+ char(10) + 'go'
from sys.tables
where is_ms_shipped = 0
and name <> 'sysdiagrams' /* sysdiagrams is classified my MS as UserTable and we dont want it */
--and schema_name(schema_id) <> 'unwantedschema' /* Optional to exclude any schema */
    order by schema_name(schema_id)

IV. Führen Sie die Ausgabe mit SSMS aus, um Daten wieder in die Tabellen einzufügen.

Dies ist eine sehr schnelle BCP-Methode, da sie den einheitlichen Modus verwendet.

1
Angel Naydenov

Wie bereits erwähnt, können Sie die Funktionen "Sichern" und "Wiederherstellen" nicht verwenden, um von einer SQL Server 2012-Datenbank zu einer SQL Server 2008-Datenbank zu wechseln. Ein von mir geschriebenes Programm, SQL Server Scripter , stellt jedoch eine Verbindung zu einer SQL Server-Datenbank her und schreibt ein Skript, eine Datenbank, ihr Schema und ihre Daten aus. Es kann von BitBucket aus geklont werden und mit Visual Studio 2010 oder höher kompiliert werden (wenn es sich um eine neuere Version handelt, öffnen Sie einfach den .csproj).

0
Jez