The task was to use the MSSQL database adapter (Zend_Db_Adapter_Pdo_Mssql) from the Zend-Framework and ensure it worked on both windows and Unix platforms.
The PDO drivers were a little tricky. The main problem we found was that different drivers require the date to be inserted with different formats and the date that comes back from the db is in different formats.
Aside from having to deal with dates (which we handled as suggested by Bill Karwin) where we use Zend_Date and at the last point we convert it to a string date http://framework.zend.com/issues/browse/ZF-181
And Limit function not working: http://framework.zend.com/issues/browse/ZF-1037
We have had no other problems connecting to MSSQL 2005 and MSSQL 2002 SQL Server.
The drivers we use are: Windows DB-LIB (MS SQL, Sybase) 5.1.6.6 http://pecl4win.php.net/
Unix http://pecl.php.net/package/PDO_DBLIB
Under Unix we use our own Zend_Db_Adapter_Pdo_Dblib which just extends Zend_Db_Adapter_Pdo_Mssql. We do this just to change the date format for insertion (we store the format required for a PDO adapter in each Zend_Db_Adapter_Pdo_* and use that when converting the date from a Zend_Date to a string).
As far as PHP/PDO is concerned – Under Windows PHP runs pdo (mssql) Under Unix PHP runs pdo (dblib)
I would be interested to hear what the performance is like using ODBC to talk to MSSQL Server. Looking at all the problems we had with dates and inconsistent drivers going the OBDC route does seem appealing just to get some consistency.