Esiste un modo per ripristinare un backup del database di SQL Server 2012 su SQL Server 2008?
Ho provato ad allegare il file, non funziona.
Esiste un modo per ripristinare un backup del database di SQL Server 2012 su SQL Server 2008?
Ho provato ad allegare il file, non funziona.
Risposte:
Hai un paio di opzioni:
Opzione A : script di database in modalità compatibilità utilizzando l'opzione Genera script:
Nota: se si esegue lo scripting del database con schema e dati, a seconda della dimensione dei dati, lo script sarà enorme e non sarà gestito da SSMS, sqlcmd o osql (potrebbe anche essere in GB).
Opzione B:
Prima esegui lo script delle tabelle prima con tutti gli indici, gli FK, ecc. E crea tabelle vuote nel database di destinazione - opzione con SOLO SCHEMA (Nessun dato).
Utilizzare BCP per inserire dati
bcp i dati usando lo script di seguito. imposta SSMS in modalità testo e copia l'output generato dallo script seguente in un file bat.
-- 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)
Esegui il file bat che genererà i file .dat nella cartella che hai specificato.
Eseguire di nuovo lo script di seguito sul server di destinazione con SSMS in modalità testo.
--- 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)
Eseguire l'output utilizzando SSMS per reinserire i dati nelle tabelle.
Questo è un metodo bcp molto veloce in quanto utilizza la modalità nativa.
Some SSIDs and linked servers didn't go across properly
. I server collegati devono essere scritti manualmente. Gli SSID possono essere trasferiti usando sp_helprevlogin. I lavori SQLAgent, i pacchetti ssis ecc. Devono essere spostati in base alle proprie esigenze. Il punto di questo metodo è quello di ottenere i dati il più velocemente possibile durante il downgrade o l'unione di 2 database.
No, non puoi andare indietro, solo avanti. È possibile creare un database vuoto nel 2008 e quindi utilizzare la procedura guidata Genera script in Management Studio per eseguire lo script dello schema e dei dati (o strumenti di confronto di terze parti di Red Gate e altri). Assicurati di impostare la versione di destinazione corretta come 2008 e dovrai mettere a punto cose incompatibili (ad esempio OFFSET o FORMAT) che potresti aver usato nel 2012.
Non esiste un modo supportato per farlo perché SQL Server non consente questo tipo di compatibilità.
Quello che puoi fare è farlo
ripristinare il database su SQL 2012
generare script per oggetti e dati
Se non si dispone di SQL Server 2012, è possibile utilizzare strumenti di terze parti per leggere il backup ed estrarre dati e struttura.
In questo caso basta creare un database vuoto su SQL 2008 e usare strumenti come ApexSQL Diff e ApexSQL Data Diff per sincronizzare oggetti e dati. Puoi trovarli anche da altri principali fornitori come Red-Gate o Idera.