Welcome to 64-bit hell

I just spent a few hours trying to figure out an issue on a project I started a while back to automate the SQL replication setup for any servers we add to our environment.  I started the project when I had some free time a few months ago, then got going on another project which took preference, and now finally have time to get going again.  First thing I did after loading the solution was hit F5 to run it, making sure that everything is as it should.  Also remembering that I left it in a working state when I put it on the back-burner.

Then I get this beauty

"Could not load file or assembly 'Microsoft.SqlServer.Replication, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. An attempt was made to load a program with an incorrect format."

Now my first reaction was that I reinstalled my machine recently, upgrading from XP SP2 to Windows 2008 64-bit edition, so I double checked my installation of the SQL Server SDK, and the various other things that are referenced in this project, but no luck.  AARRRRGGGHHH!!!

Boot up the XP VM, test the project there and it works like it should.

So, I went back to my dev environment and do what I should have done in the first place, click that friendly "Search for more help online".  And first in the list is the description for the System.BadImageFormatException with a simple solution.

Turns out that the SQL Replication SDK was developed for 32bit platforms only, so go to the Project Properties, select the Build page and set the Target Platform to x86.  Hit F5, and my project is back to a working state.

SSIS – Accessing variables from script components

 In SSIS there are are two different types of script components.  The Control Flow script, and the Data Flow script.  These 2 use different ways of accessing package variables, which was a bit confusing the first time I used teh Data Flow script component.

In the Control Flow script component you access package variables in a similar way to how DTS used to do it.

Dts.Variables("User::FromDate").Value.ToString

 However, trying this in the DataFlow script component only cause some compilation errors and nothing more.

After doing some searching, I eventually found the simple solution that was staring me in the face all along, I just never tried it.

Me.ReadOnlyVariables("User::FileName").Value.ToString()

In both cases you still have to tell the component which variables you're passing in on the property page.
 

Garmin, educate your vendors

I've helped two people in the last year to update the firmware on their Garmin units.  It is a fairly simple procedure, and it is FREE.  But in both cases that is not what the stores where the bought the units told them.  Both stores, different ones, tried to sell them new map software, which would not help to fix the issues they were experiencing, but on which the store would make a big profit.

Surely these sales people should have the training and INTEGRITY to help Garmin's clients, and if not, why are they still agents? 

Dear Multichoice…

…I have a few feature requests.

1. Would it be possible for me to instruct my PVR to record a specific show from the Internet.  I'm not always home when I realise that I forgot to program it to record a "cannot be missed" show or event.  Even better, allow me to do this from my mobile phone.

2. Why should I pay for having all the channels if I only watch a few of them?  Can I not rather have a choice selecting only the channels I want?  There are some channels that I will never watch, they do not appeal to me.  I don't see why I should pay for the "privilege" of having them.  If that is not financially feasible, make up packages where I can buy bundles of 10 channels at a time.  And allow me to swap these on a monthly basis, online if possible.  Surely this would make the service more affordable for most, and you'd grow your subscriber base.