Friday, March 21, 2008

Windows 2003 Server 64 bits edition


I haven't post in a while, I was flooded with work because of this precious little OS called windows server 2003 64 bits edition.

We have an architecture that selects updates and drops data from MDB files (MS Access). I had to migrate this architecture from a 32 bits environment to a 64 bits environment, alas; the whole thing was throwing errors.

After some pain I found out that the drivers used to connect to the MDB files do not work on 64 bits. The loathsome ‘Microsoft.Jet.OleDB.4.0’ driver. I tried different patches addressing this problem released by Microsoft, but most of them were geared for the Ithanium platform (which is not our case), therefore useless to us.

The research revealed that this driver and any other 32 bits drivers can and will work on a 64 bits environment if you explicitly force your code to run on x86 instead of x64 as a target machine. Unfortunately our web project does not have this option available (only appears on standard non-web projects) and our primitive IIS does not accept this type of configuration.

I tried configurating the IIS from command line to run on a 32 bits ASP.NET by force but every web site hosted in this server died after the change so I had to rollback and try again.

Time was running out, for us, we just moved the hands upon the clooock (8), so I had to call in the cavalry, our very own MS arquitecture expert provided a solution. We could code all the methods that called this driver in a separate WCF service. This service will be set to run x86 as the target machine, our web service will call this new service and everyone would be happy.

The WCF code was provided by one of our star developers. He had little time, but a lot of wits and a company party upstairs to attend at the time. Beer was calling him, sweet sweet sour beer, beckoning. And he got it right and working. I was seeing the light.

Boom new error. We have user defined data types and they couldn’t be serialized. After a while I decided to change every non-serializable data types to inefficient but tried and true strings. By the way: the service gave an error if you initialize a string with the alias “String”, it only accepted “string”. Weird.

Finally, alongside my project leader, we made it work. Wondrous Saturday at eleven p.m. victory.

7 comments:

Joe Cortes said...

Teal deer?

Unknown said...

TLDR yet again

Lilian said...

Freaking servers... i hate 'em...

Diego Gerardo Ramirez Garcia said...

What is your IIS version?

ilean of orz said...

IIS al reves es SII

Daliah said...

I have to admit I got NOTHING from this mumbo-jumbo-technical-stuff =P In Shakespeare's words: "it's greek to me".
I only know you were absent and stressed for a whole week with this crap... sounded tricky, sounded hard.. have no idea.
Glad you're back... kinda...
XOXO

Joe Cortes said...

@Daliah: Tnx :D
@lilian: servos sux! hsbc too.
@Diego: IIS classic, I believe is v.6.0