Retrouvez la version d'origine

Savez-vous que les fichiers de données ou de sauvegarde de SQL Server embarquent l'information sur la version d'origine qui a servi à les créer ?

Dans pas mal de cas, il peut être utile de savoir de quelle version provient un fichier de données ou de sauvegarde, voire connaître pour une base de données existante dans quelle version elle a été créée au départ.

Voici comment obtenir cette information...

Un numéro de version interne est enregistré dans le fichier (mdf ou bak), voici la liste :

Appellation commerciale N° version N° interne
2000 80 / 8.0 539
2005 90 / 9.0 611,612
2008 100 / 10.0 655
2008R2 100 / 10.5 661
2012 110 / 11.0 706
2014 120 / 12.0 782
2016 130 / 13.0 852
2017 140 / 14.0 869
2019 150 / 15.0 904
2022 160 / 16.0 957

Voici maintenant le moyen d'extraire l'information, reportez-vous au tableau pour trouver la version correspondante...

Depuis une sauvegarde

Pour obtenir l'information depuis un fichier de sauvegarde .BAK, lancez la commande TSQL suivante et relevez la valeur dans la colonne DatabaseVersion :


RESTORE HEADERONLY FROM DISK = 'x:\path\file.bak'  -- remplacez par votre fichier bak

A partir d'un fichier de données

Si vous ne voulez pas attacher la base de données (et potentiellement la migrer vers une version ultérieure), il faut aller chercher l'information en hexadécimal dans le fichier.

Heureusement il y a plus simple, avec la procédure stockée spDBVersion que vous trouverez ici. Elle n'est pas de moi et provient d'un forum msdn.

Dans une base en ligne

Pour obtenir l'information de la version de création depuis une base de données existante et en ligne, utilisez la commande suivante et relevez la valeur dans la ligne dbi_createversion : 


DBCC DBINFO(nom_de_la_base) WITH TABLERESULTS

Bonne exploration archéologique dans les versions de SQL Server... Comme cela m'arrive souvent, vous constaterez peut-être que les bases de données de certains progiciels dits "modernes" ont été créées à l'origine sous SQL Server 2000 il y a 20 ans...