Ho una copia locale di un DB di SQL Server memorizzato come file MDF. C'è un modo per dire quale versione di SQL Server è stata utilizzata per creare quel file?
Ho una copia locale di un DB di SQL Server memorizzato come file MDF. C'è un modo per dire quale versione di SQL Server è stata utilizzata per creare quel file?
Risposte:
È possibile determinare la versione del file MDF primario di un database osservando i due byte con offset 0x12064. Vedere Come determinare la versione del database di un file MDF .
Nei .bak
file il byte inferiore è 0xEAC e il valore superiore è 0xEAD.
Puoi trovare la maggior parte dei numeri di versione del database interno per MS SQL qui .
Utilizzare RESTORE HEADERONLY, ad es
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Otterrai molte colonne, ma quelle di interesse sono SoftwareVersionMajor, SoftwareVersionMinor e SoftwareVersionBuild, che dovrebbero fornire il numero di versione di SQL Server. Sul nostro sistema, ad esempio, sono 10, 0 e 4000, ovvero 10.0.4000 (2008 SP2).
Non sei sicuro di cosa succede se provi a farlo con un backup troppo vecchio per essere ripristinato sulla versione in esecuzione sul server, tuttavia, potresti semplicemente ricevere un errore e nessuna informazione (anche se in sé fornirebbe almeno alcuni indizi su la versione è di).
Per i file MDF provare questo comando:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Il risultato sarà 3 proprietà con valori: Database name
, Database version
e Collation
.
La sintassi è la seguente (il comando non è documentato, quindi maggiori informazioni qui ):
DBCC CHECKPRIMARYFILE ({'FileName'} [, opt = {0 | 1 | 2 | 3}])
FileName non è altro che il percorso effettivo del file .mdf del file di dati primari del database di SQL Server.
Opt = 0: verifica se il file è un file di dati primari del database di SQL Server (.mdf).
Opt = 1 - Restituisce il nome del database, dimensione, dimensione massima, crescita, stato e percorso di tutti i file associati al database.
Opt = 2 - Restituisce informazioni su nome database, versione e regole di confronto.
Opt = 3: restituisce nome, stato e percorso di tutti i file associati al database.
Buona domanda! Non credo, a parte il processo di prova ed errore di - diciamo - provare a ripristinare un file di backup di SQL Server 2008 R2 su SQL Server 2005. Ovviamente, ciò non funzionerà. Non riesco a ricordare a mani aperte se l'uso di Management Studio - e facendo clic sul pulsante dei contenuti per un ripristino - mostrerà qualcosa di interessante.
Non li ho provati, ma è possibile che uno strumento di terze parti come il ripristino virtuale di Red Gate te lo dirà: ti permette di guardare il database "dentro" il file di backup. http://www.red-gate.com/products/dba/sql-virtual-restore/
Puoi trovarlo usando le informazioni nella pagina di avvio del database. Ne ho scritto su http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
Il modo migliore che io abbia mai visto fare questo è stato raccolto da questo post nei forum MSDN di SQL Server.
Fondamentalmente implica entrare nel file ed esaminare la pagina di avvio del file mdf.