How to get Product Version of Microsoft Sql Server from .mdf file Header using C# code -


how product version of microsoft sql server .mdf file header using c# code.i have open .mdf file , have read product version .mdf file header. product version means 11.0.2100.60 , 10.50.1600.0 this.not 8,9,10,11 , 661 ,705,611..

using (filestream fs = file.openread(mdffile))                {                    using (binaryreader br = new binaryreader(fs))                    {                        br.readbytes(9 * 8192 + 96 + 4);                        byte[] buffer = br.readbytes(2);                        dbiversion = buffer[0] + 256 * buffer[1];                    }                    fs.close();                } 

i use code:

string mdffilename = args[0];  if (!file.exists(mdffilename)) {     console.writeline("error: specified file not exist!");     return; }  namevaluecollection mdffileversions = configurationmanager.getsection("mdffileversions") namevaluecollection;  try {     filestream fs = new filestream(mdffilename, filemode.open, fileaccess.read, fileshare.read);      binaryreader reader = new binaryreader(fs);      // skip first 0x12064 bytes     reader.readbytes(0x12064);      // read 2 bytes     short fileversion = reader.readint16();     string sqlserverversion = string.empty;      if (mdffileversions != null)     {         sqlserverversion = mdffileversions[fileversion.tostring(cultureinfo.currentuiculture)];          if (string.isnullorempty(sqlserverversion))         {             sqlserverversion = "unknown version";         }     }     else     {         sqlserverversion = "no version info available";     }      console.writeline("examined file: '{0}'", mdffilename);     console.writeline("file version : {0} ({1})", fileversion, sqlserverversion); } catch (exception exc) {     console.writeline("error: cannot open specified mdf file");     console.writeline("\t{0}: {1}", exc.gettype().fullname, exc.message); } 

and have defined file versions in app.config file this:

<?xml version="1.0" encoding="utf-8" ?> <configuration>     <configsections>         <section name="mdffileversions" type="system.configuration.namevaluesectionhandler" />     </configsections>     <mdffileversions>         <add key="515" value="sql server 7" />         <add key="539" value="sql server 2000" />         <add key="616" value="sql server 2005 (up sp1)" />         <add key="612" value="sql server 2005 (sp2 , newer)" />         <add key="655" value="sql server 2008 (up sp1)" />         <add key="661" value="sql server 2008 r2" />         <add key="705" value="sql server 2012 rc0" />         <add key="706" value="sql server 2012" />         <add key="782" value="sql server 2014" />     </mdffileversions> </configuration> 

this makes extensible - once newer versions come out, add entry in config file, , done!


Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -