Gibt es eine Möglichkeit, eine SQL Server 2012-Datenbanksicherung auf einem SQL Server 2008 wiederherzustellen?
Ich habe versucht, eine Datei anzuhängen, sie funktioniert nicht.
Gibt es eine Möglichkeit, eine SQL Server 2012-Datenbanksicherung auf einem SQL Server 2008 wiederherzustellen?
Ich habe versucht, eine Datei anzuhängen, sie funktioniert nicht.
Antworten:
Sie haben mehrere Möglichkeiten:
Option A : Datenbank im Kompatibilitätsmodus mit der Option "Skript generieren" ausschreiben:
Hinweis: Wenn Sie eine Datenbank mit Schema und Daten aus dem Skript entfernen, ist das Skript abhängig von Ihrer Datengröße umfangreich und wird von SSMS, sqlcmd oder osql nicht verarbeitet (möglicherweise auch in GB).
Option B:
Schreiben Sie zuerst Tabellen mit allen Indizes, FKs usw. aus und erstellen Sie leere Tabellen in der Zieldatenbank - Option mit NUR SCHEMA (keine Daten).
Verwenden Sie BCP, um Daten einzufügen
bcp die Daten unter Verwendung des folgenden Skripts aus. Setzen Sie SSMS in den Textmodus und kopieren Sie die vom unten stehenden Skript erzeugte 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)
Führen Sie die bat-Datei aus, die die DAT-Dateien in dem von Ihnen angegebenen Ordner generiert.
Führen Sie das folgende Skript auf dem Zielserver mit SSMS erneut 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)
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.
Some SSIDs and linked servers didn't go across properly
. Verbindungsserver müssen manuell geskriptet werden. SSIDs können mit sp_helprevlogin übertragen werden. SQLAgent-Jobs, ssis-Pakete usw. sollten gemäß Ihren Anforderungen verschoben werden. Bei dieser Methode geht es darum, die Daten so schnell wie möglich abzurufen, wenn Sie zwei Datenbanken downgraden oder zusammenführen.
Nein, Sie können nicht rückwärts, sondern nur vorwärts gehen. Sie können eine leere Datenbank in 2008 erstellen und dann den Assistenten zum Generieren von Skripten in Management Studio verwenden, um das Schema und die Daten (oder Vergleichstools von Drittanbietern von Red Gate und anderen) zu skripten. Stellen Sie sicher, dass Sie die richtige Zielversion als 2008 festgelegt haben, und Sie müssen inkompatible Elemente (z. B. OFFSET oder FORMAT) ausarbeiten, die Sie möglicherweise 2012 verwendet haben.
Es gibt keine unterstützte Möglichkeit, dies zu tun, da SQL Server diese Art von Kompatibilität nicht zulässt.
Was Sie tun können, ist zu
Datenbank unter SQL 2012 wiederherstellen
Generieren Sie Skripte für Objekte und Daten
Wenn Sie nicht über SQL Server 2012 verfügen, können Sie Sicherungskopien mit Tools von Drittanbietern lesen und Daten und Strukturen extrahieren.
In diesem Fall erstellen Sie einfach eine leere Datenbank in SQL 2008 und verwenden Tools wie ApexSQL Diff und ApexSQL Data Diff , um Objekte und Daten zu synchronisieren. Sie können diese auch von anderen großen Anbietern wie Red-Gate oder Idera finden.