
Recientemente recibí la tarea de crear una aplicación PHP que se conecta a un controlador ODBC remoto. Obtuvimos el controlador ODBC y configuramos un entorno de prueba.
Como es la primera vez que trabajo con controladores ODBC, no tengo idea de qué hacer para poder conectarme al controlador. Conozco el código y pude conectarme al controlador ODBC usando PHP y un DSN en la máquina local. Pero como tengo que conectarme desde una máquina remota usando una conexión sin DSN, creo que ya no es tan fácil.
El controlador ODBC es personalizado (PARKWAY ConnectWare para Micro Focus Files) y no obtuvimos documentación para él (solo la descripción del parámetro de la cadena de conexión, que fue útil, pero no suficiente para resolver nuestro problema). Buscar en Google tampoco ayudó, no encontramos nada.
¿Alguien sabe qué más necesita para poder conectarse de forma remota a un controlador ODBC? Lógicamente tiene sentido que sólo el driver no sea suficiente, quizás algún tipo de servidor...
Estaría agradecido por cualquier tipo de empujón en la dirección correcta :)
ACTUALIZAR:
El soporte de PARKWAY me respondió con la cadena de conexión y la información básica. Mi primer instinto fue correcto: para poder conectarme a un controlador ODBC en una máquina remota, necesito su aplicación de servidor. Ya instalé su copia de evaluación del servidor y hoy jugaré un poco con ella. La cadena de conexión que sugirieron fue:
Driver=PARKWAY ConnectWare for Micro Focus Files;DBQ=D:\MyServerData;Layout=Version3;FileType=Micro Focus;Location=MyServer
Esta vez logré obtener un error diferente al intentar conectarme:
SQL error: Failed to fetch error message
Pero supongo que esto es un problema de código.
Respuesta1
Gracias por todos los comentarios útiles, finalmente pude resolverlo :)
Si alguien tiene un problema similar, así es como lo hice:
Primero me comuniqué con el soporte. Si se encuentra atascado con un software poco común, comunicarse con el soporte técnico suele ser el primer paso que debe tomar. Generalmente tienen las respuestas correctas.
Un controlador ODBC es lo que su nombre indica, un controlador y nada más. Para cualquier tipo de acceso remoto se necesita algún tipo de servidor. Además, si desea acceder a una fuente de datos remota, necesita el controlador instalado en su máquina cliente (la máquina en la que se ejecutará su aplicación remota).
Hasta ahora, todo bien. En mi caso, obtuve la descripción del parámetro de conexión de su soporte, pero aún no pude entender cómo se veía la cadena de conexión. Intenté todo, pero nada funcionó (obtuve errores extraños que no fueron de mucha ayuda, como "no se pudo recuperar el mensaje de error").
Finalmente encontré una respuesta en esta publicación:dsn a cadena de conexión
Parece que los registros DSN no son más que pares nombre-valor. La conexión a la fuente de datos mediante un DSN funcionó, pero no pude usar un DSN en mi caso particular. Entonces obtuve los parámetros necesarios abriendo REGEDIT y, como lo sugiere la publicación anterior, abriendo la ubicación del DSN del sistema:
HKLM\Software\Wow6432Node\ODBC\ODBC.INI\
Esta es la ubicación donde se almacenan los registros DSN del sistema de 32 bits. Si necesita encontrar la versión de 64 bits, se encuentra aquí:
HKLM\Software\ODBC\ODBC.INI\
Efectivamente, ahí estaba el sistema DSN que necesitaba. Si alguien está interesado en saber por qué todavía no sabía cómo se ve la cadena de conexión, aunque tenía la descripción del parámetro de la cadena de conexión:
Para poder conectarme a un servidor remoto, tuve que agregar un parámetro "Ubicación" a la cadena de conexión. Intenté agregar la URL y/o IP de la máquina del servidor y no funcionó. Al mirar el Registro descubrí que en realidad tengo que agregar la IP, el puerto y el protocolo a un archivo de configuración, específico para este controlador ODBC. Para el atributo "ubicación" dentro de la cadena de conexión tuve que especificar el nombre de la configuración que agregué.