J'ai une copie locale d'une base de données SQL Server stockée sous forme de fichier MDF. Existe-t-il un moyen de savoir quelle version de SQL Server a été utilisée pour créer ce fichier?
J'ai une copie locale d'une base de données SQL Server stockée sous forme de fichier MDF. Existe-t-il un moyen de savoir quelle version de SQL Server a été utilisée pour créer ce fichier?
Réponses:
Vous pouvez déterminer la version du fichier MDF principal d'une base de données en examinant les deux octets à l'offset 0x12064. Voir Comment déterminer la version de base de données d'un fichier MDF .
Dans les .bak
fichiers, l'octet inférieur est 0xEAC et supérieur est 0xEAD.
Vous pouvez trouver la plupart des numéros de version de base de données internes pour MS SQL ici .
Utilisez RESTORE HEADERONLY, par exemple
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Vous obtiendrez beaucoup de colonnes, mais celles qui vous intéressent sont SoftwareVersionMajor, SoftwareVersionMinor et SoftwareVersionBuild, qui devraient vous donner le numéro de version de SQL Server. Sur notre système, par exemple, ce sont 10, 0 et 4000, ce qui signifie 10.0.4000 (2008 SP2).
Je ne sais pas ce qui se passe si vous essayez de le faire avec une sauvegarde trop ancienne pour être restaurée sur la version que le serveur exécute, cependant - vous pourriez simplement obtenir une erreur et aucune information (bien que cela en soi fournisse au moins quelques indices sur la version d'origine).
Pour les fichiers MDF, essayez cette commande:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Il affichera 3 propriétés avec des valeurs: Database name
, Database version
et Collation
.
La syntaxe est la suivante (la commande n'est pas documentée, donc plus d'informations ici ):
DBCC CHECKPRIMARYFILE ({'FileName'} [, opt = {0 | 1 | 2 | 3}])
FileName n'est rien d'autre que le chemin réel du fichier .mdf du fichier de données primaires de la base de données SQL Server.
Opt = 0 - Vérifie si le fichier est un fichier de données primaires de base de données SQL Server (.mdf).
Opt = 1 - Renvoie le nom, la taille, la taille maximale, la croissance, l'état et le chemin de la base de données de tous les fichiers associés à la base de données.
Opt = 2 - Renvoie les informations sur le nom, la version et le classement de la base de données.
Opt = 3 - Renvoie le nom, l'état et le chemin de tous les fichiers associés à la base de données.
Bonne question! Je ne le crois pas, à part le processus d'essai et d'erreur de - disons - essayer de restaurer un fichier de sauvegarde SQL Server 2008 R2 sur SQL Server 2005. Évidemment, cela ne fonctionnera pas. Je ne me souviens pas si l'utilisation de Management Studio - et en cliquant sur le bouton de contenu pour une restauration - vous montrera quelque chose d'intéressant.
Je ne les ai pas essayés, mais il est possible qu'un outil tiers tel que la restauration virtuelle de Red Gate vous le dise - il vous permet de regarder la base de données "à l'intérieur" du fichier de sauvegarde. http://www.red-gate.com/products/dba/sql-virtual-restore/
Vous pouvez le trouver en utilisant les informations de la page de démarrage de la base de données. J'ai écrit à ce sujet sur http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/