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
Post a Comment