
Недавно мне поручили создать PHP-приложение, подключающееся к удаленному драйверу ODBC. Мы получили драйвер ODBC и настроили тестовую среду.
Так как я впервые работаю с драйверами ODBC, я понятия не имею, что делать, чтобы подключиться к драйверу. Я знаю код, и я смог подключиться к драйверу ODBC с помощью PHP и DSN на локальной машине. Но поскольку мне приходится подключаться с удаленной машины, используя соединение без DSN, я думаю, что это уже не так просто.
Драйвер ODBC является пользовательским (PARKWAY ConnectWare for Micro Focus Files), и мы не получили для него документации (только описание параметров строки подключения, которое было полезным, но недостаточным для решения нашей проблемы). Гугление тоже не помогло, мы ничего не нашли.
Кто-нибудь знает, что еще нужно для удаленного подключения к драйверу ODBC? Логично, что одного драйвера недостаточно, может быть, какой-то сервер...
Буду благодарен за любой толчок в правильном направлении :)
ОБНОВЛЯТЬ:
поддержка PARKWAY ответила мне со строкой подключения и базовой информацией. Мой первый инстинкт оказался верным — чтобы иметь возможность подключиться к драйверу ODBC на удаленной машине, мне нужно их серверное приложение. Я уже установил их ознакомительную копию сервера и немного поиграюсь с ней сегодня. Строка подключения, которую они предложили, была:
Driver=PARKWAY ConnectWare for Micro Focus Files;DBQ=D:\MyServerData;Layout=Version3;FileType=Micro Focus;Location=MyServer
На этот раз при попытке подключения мне удалось получить другую ошибку:
SQL error: Failed to fetch error message
Но я полагаю, что это проблема кода.
решение1
Спасибо за все полезные комментарии, наконец-то я смог разобраться :)
Если кто-то сталкивается с подобной проблемой, вот как я ее решил:
Сначала я связался со службой поддержки. Если вы застряли с необычным программным обеспечением, обращение в службу поддержки обычно является первым шагом, который вы должны предпринять. Обычно у них есть правильные ответы.
Драйвер ODBC — это то, что следует из его названия, драйвер и ничего больше. Для любого вида удаленного доступа вам нужен какой-то сервер. Также, если вы хотите получить доступ к удаленному источнику данных, вам нужно установить драйвер на вашей клиентской машине (машине, на которой будет работать ваше удаленное приложение).
Пока все хорошо. В моем случае я получил описание параметров подключения от их поддержки, но все еще не мог понять, как выглядит строка подключения. Я пробовал все, но ничего не работало (я получал странные ошибки, которые были не очень полезны, типа «не удалось получить сообщение об ошибке»).
Наконец я нашел ответ в этом посте:dsn-to-connectionstring
Похоже, записи DSN — это не более чем пары имя-значение. Подключение к источнику данных с помощью DSN сработало, но в моем конкретном случае я не мог использовать DSN. Поэтому я получил необходимые параметры, открыв REGEDIT и, как предлагалось в посте выше, открыв местоположение System DSN:
HKLM\Software\Wow6432Node\ODBC\ODBC.INI\
Это место, где хранятся 32-битные записи System DSN. Если вам нужно найти 64-битную версию, она находится здесь:
HKLM\Software\ODBC\ODBC.INI\
Конечно, там был нужный мне системный DSN. Если кому интересно, почему я до сих пор не знал, как выглядит строка подключения, хотя у меня было описание параметров строки подключения:
Чтобы подключиться к удаленному серверу, мне пришлось добавить параметр «Location» в строку подключения. Я попробовал добавить URL и/или IP-адрес серверной машины, но это не сработало. Заглянув в реестр, я обнаружил, что на самом деле мне нужно добавить IP-адрес, порт и протокол в файл конфигурации, специфичный для этого драйвера ODBC. Для атрибута «location» внутри строки подключения мне пришлось указать имя добавленной мной конфигурации.