I want to make an offline map with certain zoom levels of an area from OSM (preferably keeping the styles of OSM). Client will use OpenLayers , If needed I can install Geoserver/Mapserver and MS-SQL Express. What will be the easiest way to such a thing ? Do I need to use XYS layer type or local WMS? How do I automatically cache the area I need ?
What do you mean by "offline" here? Does it need to have data in user browser? For this there is openlayers sample for caching and pre-seeding it from any source. It does not matter which server source do you use then. There is limit how much data can be downloaded, few megabytes max.
If you have some local "offline caching" server, then you can use just plain web server and give proper tile directory. My favourite tile downloader is MOBAC.