Подключение к базе данных Advantage с помощью PHP в Windows - PullRequest
0 голосов
/ 29 марта 2012

У меня есть клиент, у которого есть приложение, которое использует базу данных Advantage. У меня проблемы с подключением к нему через PHP через ODBC или PHP-коннектор он получает эту ошибку открытия 6420, которая кажется довольно распространенной.

Я думаю, что большая часть проблемы заключается в моем недостатке понимания базы данных Advantage. Я думаю, что проблема может быть там на самом деле не работает сервер? у этого приложения может быть свой собственный сервер? Я написал небольшую программу на C #, которая подключается к словарю данных и хорошо его читает, но она использует Advantage.data.provider для C #. Это действует как сервер?

Итак, я думаю, что нижняя строка: Есть ли способ подключиться к этому словарю данных / базе данных Advantage, чтобы я мог получить доступ с помощью PHP? (желательно без покупки чего-либо)

Спасибо за вашу помощь.

1 Ответ

5 голосов
/ 29 марта 2012

ПРИМЕЧАНИЕ. Я не имею отношения к Advantage или Sybase (материнской компании, которая владеет Advantage); Раньше я работал с Advantage регулярно и имел некоторый опыт, но никоим образом не связан с компанией или продуктом.

Сервер базы данных Advantage (ADS) работает в трех разных режимах. По умолчанию он работает в режиме сервера (ADS_REMOTE_SERVER), который требует запуска экземпляра сервера базы данных Advantage, который можно найти путем проверки на определенном порту (порт настраивается).

Второй режим по умолчанию - ADS_AIS_SERVER - Advantage Internet Server. Это позволяет удаленным соединениям напрямую подключаться к экземпляру AIS через интернет-соединение; Я никогда не использовал эту версию ADS, поэтому я не могу комментировать этот режим.

Последний режим - Локальный сервер (не настроенный в качестве типа подключения по умолчанию), в этом случае загружается локальная копия библиотеки Advantage DLL, и она запускается с использованием этого локального подключения для доступа к данным. В этом режиме некоторые функции недоступны (например, транзакции), а количество подключений ограничено. Advantage Local Server бесплатен для локального использования и поддерживает до 5 подключений (последний раз я проверял).

ADS имеет несколько способов подключения (ODBC, поставщик данных .NET, библиотеки для C, C #, Clipper, FoxPro и несколько других) и поддерживает как Windows, так и Linux как на уровне сервера, так и на уровне клиента.

Режим обычно настраивается вызовом API; Я более знаком с использованием ADS через его реализацию компонента Delphi; через API ADSSetServerType определяет, какой режим используется (или комбинацию режимов).

Для ODBC вы настраиваете режим через экран конфигурации ODBC (отображается при использовании обычной утилиты администрирования ODBC на панели управления Windows) - см. Групповой блок Доступные типы серверов на рисунке ниже:

ADS ODBC Configuration Screen

Согласно документации, вы правы в том, что это ошибка обнаружения. Вы проверили предложенные решения?

Проблема : приложению Advantage не удалось подключиться к серверу базы данных Advantage.

Решение : Эта проблема может возникать из-за нескольких проблем. Некоторые общие решения перечислены ниже. Обратитесь к базе знаний Advantage для получения более подробных описаний и более полного списка известных случаев ошибок.

  • Убедитесь, что сервер базы данных Advantage установлен и работает на сервере, на котором расположена база данных.

  • Если вы пытаетесь использовать Advantage Local Server, а не Advantage Database Server, убедитесь, что в настройках приложения «Типы серверов» задано использование Advantage Local Server.

  • Если вы используете Native SQL Utility в Advantage Data Architect и хотите использовать локальный сервер Advantage, а не сервер базы данных Advantage, убедитесь, что для типа соединения Advantage установлено значение «Локальный (ALS)». Это можно сделать в диалоговом окне «Параметры запроса», доступ к которому осуществляется нажатием кнопки с отверткой, молотком и гаечным ключом.

  • Если сервер NetWare 5 или выше, убедитесь, что версия сервера базы данных Advantage 5.6 или выше, и убедитесь, что клиент Advantage v2.6 или выше.

  • При подключении к серверу, на котором установлен только IPX, убедитесь, что клиент Advantage включен для отправки пакетов IPX.

  • При работе через брандмауэр убедитесь, что порты отправки и получения IP-адреса Advantage правильно настроены и открыты через брандмауэр.

(Я собирался предоставить ссылки на документацию на веб-сайте Sybase, но, похоже, сейчас он недоступен для технического обслуживания; я обновлю этот ответ завтра, когда он будет создан, или у меня будет доступ к ссылкам, добавленным в закладки с моего офисного ПК.)

...