2013-03-01 25 views
5

Devo convertire un file DATABASE.MDF da SQL Server 2008 a SQL Server 2012?Come si converte un file .mdf di SQL Server 2008 in SQL Server 2012?

Database 'Sales' cannot be upgraded because its non-release version (539) is not supported by this version of SQL Server. You cannot open a database that is incompatible with this version of sqlservr.exe. You must re-create the database.
Could not open new database 'Sales'. CREATE DATABASE is aborted. (Microsoft SQL Server, Error: 950)

+2

non è necessaria la conversione di esso. Basta ripristinarlo direttamente su SQL Server 2012. –

+0

Grazie per il tempo, ma ho il prossimo errore: Database 'Vendite' non può essere aggiornato perché la sua versione non-release (539) non è supportata da questa versione di SQL Server. Non è possibile aprire un database non compatibile con questa versione di sqlservr.exe. È necessario ricreare il database. Impossibile aprire il nuovo database 'Vendite'. CREATE DATABASE è stato interrotto. (Microsoft SQL Server, Errore: 950) ..................e onestamente ho trovato diverse soluzioni, ma senza successo – Andreu

+2

Si prega di consultare l'aggiornamento alla mia risposta. Sai che c'è una grande differenza tra SQL Server 2000 e SQL Server 2008. Non descrivere il tuo problema con precisione è un buon modo per ottenere una serie di consigli inutili e sprecare il tempo delle persone nel processo. –

risposta

15

Basta allegarlo e sarà aggiornato. Se non si dispone del file LDF (? E perché non si dispone del file LDF) potrebbe essere necessario utilizzare:

CREATE DATABASE [DatabaseName] ON 
    (FILENAME = N'Drive:\path\file.mdf') 
    FOR ATTACH_REBUILD_LOG; 

Ci sono alcune avvertenze, ovviamente ...

  • visto che hai solo il file .mdf, potresti essere in un brutto risveglio. Se il file non è stato rimosso in modo corretto da SQL Server, potrebbe non essere reinseribile e sarà necessario tornare al server di origine per un backup corretto (non un file .mdf). Tutto dipenderà da dove hai ottenuto il file .mdf che stai cercando di aggiornare. Se il file .mdf non è stato pulito per un lato, si può ottenere questo errore:

File activation failure. The physical file name "..._log.LDF" may be incorrect.
The log cannot be rebuilt because the database was not cleanly shut down.
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'DatabaseName'. CREATE DATABASE is aborted.

  • se il database è in modalità di compatibilità 80, sarà aggiornato a 90. Questo potrebbe significare un codice di lavoro possono interruzione improvvisa, ad esempio *=/=* sintassi di join.
  • se il vostro database è> 10 GB e provate ad allegare a Express (e forse LocalDB, non l'avete mai provato), il collegamento fallirà (o forse l'attaccamento avrà successo ma fallirà al primo aumento automatico? .
  • si verificano anche problemi se il database è stato creato su Enterprise/Developer 2008 e le funzionalità utilizzate sono disponibili solo lì e si collega il database alle edizioni Standard o Express ...
  • OK, dal messaggio di errore, si non stanno cercando di collegare un database 2008, ma piuttosto un database 2000. Non è possibile collegarlo direttamente a SQL Server 2012. Innanzitutto è necessario collegarlo a qualsiasi istanza di SQL Server 2005, 2008 o 2008 R2 per aggiornarlo a tale versione, quindi eseguirne il backup e ripristinarlo su SQL Server 2012.

FWIW, un modo molto, molto, molto più sicuro di spostare un database da un'istanza all'altra sta usando BACKUP/RESTORE (il motivo è che se il vostro backup non riesce, hai ancora una copia del database - se si staccare un database e qualcosa va storto, hai zero copie). Sebbene alcuni dei problemi sopra riportati possano ancora essere applicati anche con questo approccio più sicuro.

+0

grazie per le informazioni .... e ora .. Impossibile aprire il nuovo database 'Vendite'. CREATE DATABASE è stato interrotto. Msg 950, livello 20, stato 1, riga 1 Il database "Vendite" non può essere aggiornato perché la versione non versione (539) non è supportata da questa versione di SQL Server. Non è possibile aprire un database non compatibile con questa versione di sqlservr.exe. È necessario ricreare il database. Come potrebbe risolvere il problema? – Andreu

+3

Hai * letto il mio aggiornamento *, l'ultimo punto elenco che inizia con 'OK'? *** Non puoi collegare questo database a SQL Server 2012 ***. È necessario allegarlo al 2005, 2008 o 2008 R2 * prima *, quindi eseguirne il backup e ripristinarlo fino al 2012. Interrompere la prova. Nessuno degli altri metodi funzionerà - questo è intenzionalmente bloccato da SQL Server. –

+0

Grazie, ho risolto il problema, solo per indicare OK .. Mi scuso ho provato tante opzioni e ho avuto poco tempo e molta pressione, ma non l'avrei fatto senza il tuo aiuto Soluzione: backup/ripristino – Andreu

2

L'OP sembra essere stato scambiato per il suo tipo di DB. Versione 539 di SQL Server non è 2008 ma SQL Server 2000. Vedere questo thread: SQL Server file version number: where can I find a reference?

Ho incontrato questo stesso messaggio di errore cercando di collegare/ripristinare un db di SQL Server 2000 a un'istanza di SQL Server 2012. Forse c'era un modo per aggirarlo, ma quello che ho fatto è stato invece convertire prima in SQL Server 2008 R2 e poi in SQL Server 2012. Ciò è stato eseguito senza problemi.

+0

come ha fatto lo converti in versione 2012. C'è qualche strumento? – yogihosting

+0

In realtà non mi ricordo se ho ripristinato da .bak o semplicemente stavo collegando e scollegando un database. Ho avuto entrambe le istanze 2008R2 e 2012 sulla mia macchina, quindi l'ho appena collegata/ripristinata all'istanza 2008, quindi scollegata/sottoposta a backup e collegata/ripristinata all'istanza 2012. – qianlong

Problemi correlati