Firstly, welcome back mate. Nice to see you about
The ODBC drivers would need to be on a box accessing the MSSQL base, not that box itself. I did this for a client a bit ago, where we have a legacy MSSQL base and application but we wanted to integrate with another company that uses MySQL, and then export data out in an XML format to yet another service.
I installed another little box with RedHat on it and the ODBC drivers, as well as MySQL and and rather lush PHP installation. First step was getting the box to talk to the MSSQL box which is not difficult, but was intricate, as a I recall. Once there, accessing it via PHP was quite easy.
If there's no automated solution out there, then if I had this task I'd probably create a table that held that last-imported record from the original database. In other words, the contacts table I have gotten everything from id 37114 on 12/23/09 ... so that I'd know easily what to scan for and retrieve. Of course, you could just look at the max(id) of the new table and see if you have everything from the old...
This is obviously trickier if you want to do an actual sync of tables that are thrashing, rather than just adding. Please tell me you don't need to write your own journaling system for the old database. But if you do, I believe I'd use triggers to place a record of the change into another table (a new one on the original database) and then periodically grab those changes, interpret them and apply them in the new. That's going to be fun.
Nuts might know of a way to get journaled records from a MSSQL db into a usable format... that'd save you a boatload of work.