Blog
home > blog > Ripristinare un backup su una versione precedente di SQL Server

Tag: SQL Server, backup, Microsoft

Ripristinare un backup su una versione precedente di SQL Server

Microsoft impedisce di ripristinare un backup creato con una versione successiva di SQL Server. Esaminiamo un workaround per aggirare il problema.
di Maurizio Ceravolo
Microsoft per scelta progettuale impedisce di ripristinare un backup creato da una versione successiva di SQL Server su una versione precedente. Anche se il backup fa riferimento ad un database in compatibilità dell'SQL Server precedente.

Immaginiamo di stare sviluppando una applicazione sul proprio computer dove c'è SQL Server 2008 R2. Progettiamo un database in compatibilità SQL Server 2008. Una volta finito, facciamo il backup lo spostiamo sul server dove c'è installato SQL Server 2008. Ripristiniamo il backup e dopo pochi secondi si blocca e ritorna questo errore:

The database was backed up on a server running version %ls. That version is incompatible with this server, which is running version %ls. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server.

Purtroppo non c'è alcun verso per farglielo digerire. Se il database che abbiamo progettato non ha ancora dati dentro, la soluzione è molto semplice. Si fa creare dal Managment Studio lo script di generazione del database e lo si fa eseguire in remoto.

Se sono presenti dati invece abbiamo davanti a noi due strade che dipendono dalle dimensioni del database stesso. Se è dell'ordine delle poche migliaia di record, possiamo pensare di far scriptare oltre alla struttura anche i dati. Se per caso abbiamo già decine di migliaia di record o più, allora la questione si fa spinosa. L'unica maniera è fare una importazione di dati da un db all'altro. Però c'è il grosso rischio che ci siano blocchi continui, per violazioni di integrità referenziali. Per evitare di importare una tabella per volta, conviene disabilitare prima i vincoli già presenti sul database, come ho spiegato nel post precedente a questo.

Prima di iniziare l'importazione, non dimenticate di abilitare anche l'IDENTITY INSERT per ogni tabella, altrimenti o non vengono inseriti i dati oppure, peggio, vengono create chiavi nuove per le tabelle.

Con un po' di fatica alla fine il database viene importato. Il consiglio, però, è di verificare prima su che SQL Server andrete a pubblicare il database, e se è precedente a quello su cui di solito sviluppate, o fatevi una macchina virtuale con quella versione di SQL Server o sviluppate il db direttamente sul server remoto (se possibile). Vi risparmierete ore di perdita di tempo.
Post correlati
2010
9
Dicembre
TSQL: concatenare più record senza usare un cursore
Maurizio Ceravolo
Concatenare più record di una tabella in un'unica stringa necessita un cursore, che però è poco performante. Vediamo un metodo tramite FOR XML PATH per concatenare con una query secca.
2012
13
Aprile
Introducing Microsoft SQL Server 2012: Ebook gratuito
Maurizio Ceravolo
Con il rilascio di SQL Server 2012, Microsoft pubblica in maniera gratuita l'ebook "Introducing Microsoft SQL Server 2012" per iniziare a conoscere il nuovo dbms.
2012
12
Aprile
SQL Server 2012 è stato rilasciato
Maurizio Ceravolo
Microsoft ha comunicato di aver reso disponibile per la vendita ed il download SQL Server 2012, l'ultima release del suo DBMS.
2011
27
Settembre
Mango è tra noi
Maurizio Ceravolo
Senza alcun preannuncio, oggi Microsoft ha rilasciato Windows Phone 7.5. Nome in codice Mango. Da oggi alcuni telefoni potranno aggiornarsi al nuovo OS.
2011
1
Settembre
La casa del futuro di Microsoft
Maurizio Ceravolo
Microsoft ci apre di nuovo le porte, con un video, alla sua casa digitale, il progetto di ricerca di domotica.


Archivio Mensile Blog
Tag Cloud
Apple asp evoluzionismo digitale Facebook geek Google Google+ humor innovazione Interoperabilità iPhone javascript marketing Microsoft Motori di ricerca Programmazione social network telefonia video Windows 8
Ultimi Post
I migliori di oggi
I più popolari del mese
Top post