View Full Version : Zend / Verbindung zu Microsoft SQL
Hallo,
gibt es die Möglichkeit auf einer IBM i5 unter ZendServer/Apache bzw. für PHP ein Treiber bereitzustellen, dass die PHP-Anwendung auf einen Microsoft SQL Server zugreifen kann?
Gruß
Indirekt. Du kannst ArdGate installieren und mit einem JDBC-Treiber dann zugreifen.
Von PHP aus solltest du mit den normalen Funktionen zugreifen können, da man den Datenbanknamen (WRKRDBDIRE) in der Verbindung ja angeben kann.
https://sourceforge.net/projects/appserver4rpg/
Von PHP aus solltest du mit den normalen Funktionen zugreifen können, da man den Datenbanknamen (WRKRDBDIRE) in der Verbindung ja angeben kann.
Hast du dafür ein Beispiel oder eine Beschreibung?
Die Beschreibung für ArdGate findest du in dem Link.
Wie du mit PHP auf die Datenbank der IBM i zugreifen kannst musst du der PHP-Doku entnehmen.
Andreas_Prouza
02-03-21, 14:57
Mit YUM kannst du auch ODBC Treiber auf der IBM i installieren.
Dann könntest du in PHP direkt auf die MS DB zugreifen.
Hast du da mal ausprobiert? ODBC-Treiber liegen meist nur in Binärversionen vor und werden so auf der AS/400 (PASE) gar nicht laufen können.
holgerscherer
03-03-21, 13:15
Hast du da mal ausprobiert? ODBC-Treiber liegen meist nur in Binärversionen vor und werden so auf der AS/400 (PASE) gar nicht laufen können.
ODBC gibts auch native auf IBM i:
https://techchannel.com/SMB/8/2019/ODBC-Driver-for-IBM-i
Hm, wozu soll das gut sein, auf der IBM i einen ODBC-Treiber für die DB2 for i zu installieren?
Außerdem bestätigt dies ja nur meine obige Aussage: ODBC-Treiber sind i.d.R. Binaries, in diesem Fall für IBM i (Pase).
Um auf die Ursprungsfrage zurückzukommen: Was hilft dieser Treiber um auf einen SQL-Server zuzugreifen?
Und für Zend gibts ja einen native DB-Zugriff:
https://www.zend.com/blog/unleash-your-db2-databases-php
Da man i.d.R. einen 4-teiligen Tabellenzugriff hat, sollte man auch ArdGate-DB's erreichen können:
System.DataBase.Schema.Tabelle
Database ist der Name der DB, die per WRKRDBDIRE registriert ist.
Andreas_Prouza
03-03-21, 15:42
Mit dem unixODBC hab ich schon auf einer RedHat Maschine gearbeitet und kann da auf Oracle, DB2 usw. zugreifen.
Ich hab's jetzt nicht probiert, aber da dieses unixODBC auch für PASE verfügbar ist müssten auch entsprechende ODBC Treiber dort lauffähig sein.
Ganz nach dem Motto: Probieren macht klug.
Der Vorteil bei ODBC auf der IBM i ist auch, dass man viele Open Source Projekte quasi 1:1 auf der IBM i verwenden kann ohne die DB Zugriffe umzuschreiben, wenn diese ODBC verwenden.
Etwas Aufwand hat man bei jeder Lösung. Ist die Frage was einem lieber ist.
JDBC Job via Java, dann kann man im PHP via db2_connect() die Verbindung aufbauen.
Oder via ODBC und da gibt's in PHP ebenfalls klassische Zugriffe (z.B.: PDO).
Du benötigst aber dide Quellen um die Treiber für Pase erstellen zu können.
Es gibt für SQL-Server auch PHP-Libs, allerdings nur für Windows/Linux in Binärform.
https://docs.microsoft.com/de-de/sql/connect/php/microsoft-php-drivers-for-sql-server-support-matrix?view=sql-server-ver15
Überrede mal Microsoft, die Quellen herauszurücken oder den Treiber für IBM i zu entwickeln. Immerhin sprechen wir beim Binärcode vom MI-Code der IBM i und kein Intel/Mac-Code.
Bisher konnte ich jedoch JDBC-Treiber auf der IBM i verwenden, was wiederum für Ardgate spricht.
Nachtrag:
Ggf. unterstützt Zend for i ja auch die Javabridge:
https://help.zend.com/zend/zend-server-6.2/content/java_bridge_component.htm
Dann könntest du wieder den JDBC-Treiber des SQL-Servers verwenden.
https://docs.microsoft.com/de-de/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15