mmofacts.com

PHP, PDO und SQL Server 2005 Express

gepostet vor 16 Jahre, 10 Monate von None
Hi!
Hat jemand PDO unter PHP/Windows im Einsatz und kann mir sagen wie ein funkionierender Connection String für PDO in PHP auszusehen hat, wenn als Datenbank SQL Server 2005 Express verwendet wird.
Die Doku von PHP/PDO wiederspricht sich gerne, im Web findet man auch nur unwirsches Zeug und jeder behauptet nur seine Lösung sei die einzigst richtige.
Ich will nur eine Funktionierende
Mit dem User kann ich mich in der Datenbank über die GUI einloggen und zwar als SQL-Server Account.
Named Pipes und TCP/IP ist aktiviert.
Der Port ist erstmal Default auf 1433 gelassen.
PDO ist laut phpinfo() geladen und als Flavour *G* ist SQL 7.0 gewählt. Ok... bissle komisch, gibt aber wohl nichts neueres.
Hier mein Beispiel:
$pdo = new PDO('mssql:host=DANA\SQLEXPRESS,1433;dbname=datenbank', 'username', 'passwort');

Ich bekomme da nur Timeouts.
Hab schon den Port mit :1433 angegeben, sogar ohne Port habe ich es schon versucht.
Als Host habe ich von localhost über 127.0.0.1 bis zur echten IP-Adresse schon alles versucht. Das auch in Kombination mit dem Port.
Mir gehen die Ideen aus, was wohl auch an meiner Müdigkeit liegt.
gepostet vor 16 Jahre, 10 Monate von Nuky
Ich tipp mal ins Blaue: Firewall ein oder so?
gepostet vor 16 Jahre, 10 Monate von None
Nein. Leider nicht.
Ich bin jetzt auf dem Weg rauszufinden was los ist.
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:
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.
gepostet vor 16 Jahre, 9 Monate von Nuky
Betreibst du den Server auch auf Windows?
Sonst schau ob du auf deinem Server die Verbindung zusammenkriegst und arbeite nur lokal mit ODBC - ein bischen per config die Connections umändern hat glaub ich auch noch niemandem geschadet..
gepostet vor 16 Jahre, 9 Monate von None
Ich arbeite zu 100% nur unter Windows.
Und die ODBC-Lösung gefällt mir absolut nicht.
Habe Projektintern jetzt repriorisiert und ein anderes Thema vorgezogen.
PHP/PDO kommt auf die Halde der unerledigten Dinge.

Auf diese Diskussion antworten