Und wieder beginnt mein Leidensweg mit OpenSource Software.
Diesmal wollte ich mittels PDO, welche eine Datenbankschnittstelle unter PHP darstellt, auf einen SQL Server zugreifen.
Nach dem üblichen Hürdenlauf mit dem immer (!) noch verhunzten MSI-Installer von PHP, hatte ich zwar PDO am Laufen, aber es wollte nicht mit dem SQL Server reden.
Der SQL Server war korrekt konfiguriert, ich konnte mich mit einem extra für diesen Zweck angelegten Account auch einloggen und ihn verwenden. TCP/IP war auch aktiviert als Kommunikationsweg, der Port war definiert und in der Firewall freigegeben, es konnte also nichts mehr blockieren.
Trotzdem wollte PHP/PDO nicht mit dem SQL Server reden.
Hier nun meine Ergebnisse der Stundenlange Analyse, welche dann folgte:
In folgender PDO Doku steht das PDO_DBLIB für FreeTDS / Microsoft SQL Server / Sybase zuständig ist.
Folgt man dem Link der sich unter PDO_DBLIB verbirgt, dann kommt man zu einer Subseite der PHP-Doku, welche folgende Warnung beinhaltet:
Diese Erweiterung ist EXPERIMENTELL. Das Verhalten dieser Erweiterung, einschließlich der Funktionsnamen, und alles Andere was hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko.
Im ersten Kommentar wird auf die PECL Page von PDO hingewiesen, welche dann unter anderem das Release 1.0 mit Datum 2005-11-26 enthält.
Vorhin war ich Neugierig und habe einfach mal auf den Link hinter dem zugehörigen Changelog Eintrag geklickt und da kam dann das:
Update code for API changes in PDO; no actual changes have been made to this driver.
Windows binaries can be found at:
http://pecl4win.php.net/ext.php/php_pdo_mssql.dll
however: you are *strongly* recommended to use PDO_ODBC instead of this driver on
Windows platforms.
** Changes **
- Fix Bug #34777; segfault when retrieving non-existent error info
- Fix Bug #35032; didn't find FreeTDS includes on some systems
PDO_ODBC werde ich auf gar keinen Fall verwenden, dafür ist die Gesamtperformance von ODBC zu schlecht. MySQL mit InnoDB will ich nicht einsetzen. Im Moment bewege ich mich dort wo es sofort geht, von OpenSource Software weg und setze immer mehr auf kommerzielle Kauflösungen.
Von daher fällt für mich der Zwischenschritt der Migration von MySQL nach MS-SQL weg und ich werde zusätzlich die Migration von PHP nach C# angehen müssen.
Das gefällt mir im Moment überhaupt nicht, aber ich werde wohl damit leben müssen.
Und was bleibt mir noch zu tun?
Genau! Die Benotung des Ganzen Konstrukts, wo da wäre, das…

- …die Doku von PHP alles andere als aktuell ist.
- …bei PHP Sachen als Stable maskiert werden, welche noch nicht mal Ansatzweise als Stable gelten können.
- …der Hinweis auf Probleme nur im Changelog auftaucht.
- …man lieber auf den langsamen ODBC Treiber setzt, anstatt die vorhandenen Bugs zu fixen.
- …man nur so zu aggieren scheint, weil es sich hier um eine Microsoft Datenbank handelt.
DING DING DING Und da war er der 5. Fricklerpunkt!
Und somit bekommt PHP/PDO den Frickler-Award der Woche!
Im Moment bemüht sich PHP redlich den Frickler-Award des Jahres zu bekommen.
So langsam stelle ich mir eine Frage… ist OpenSource Software immer so unreif?