#connection #odbc #powerbuilder
#подключение #odbc #powerbuilder
Вопрос:
мое приложение отлично работает на компьютере, на котором я его создал, но на других компьютерах отображается ошибка: «Транзакция не подключена». Я установил пакет, созданный Runtime Packager, и добавил пару DLL-файлов в путь к приложению на целевой машине. Все та же проблема.
Мой вопрос в том, должен ли я использовать подключение без dnsl для его работы? Или, может быть, проинформировать целевой КОМПЬЮТЕР о требуемой конфигурации ODBC? Если да — как это сделать?
Я много читал об odbc.ini, системных переменных, записях реестра и т.д. Но теперь я все перепутал и понятия не имею, что делать.
Я буду очень благодарен за вашу помощь.
Крис.
Комментарии:
1. Вы создали экземпляр объекта транзакции (SQLCA), установили параметры подключения, а затем подключились к нему?
2. К какому типу базы данных вы подключаетесь? Если это Microsoft SQL Server, раньше считалось, что вам нужно установить встроенную среду выполнения SQL Server. Дополнительная информация здесь: slapouttech.blogspot.com/2012/04 /…
3. @MattBalent: Да, я все это сделал, это хорошо работает на моем компьютере. Я повторно загружаю данные из базы данных Oracle (два разных сервера). В настоящее время я пытаюсь добавить соответствующие записи реестра на клиентском компьютере, чтобы сообщить ему об источниках ODBC. Проблема в том, что я не могу найти соответствующую запись на своем компьютере, чтобы экспортировать ее и импортировать на клиент. Я бы ожидал увидеть запись с IP-номером и именем базы данных. Я не вижу этой информации в ODBC. INI в реестре.
4. Мне просто интересно — нужно ли мне устанавливать драйверы Oracle ODBC на клиентский компьютер, чтобы включить подключение ODBC?
5. Я ожидаю, что вам придется установить драйверы на клиенте.
Ответ №1:
Лично я использую DSN. Итак, единственное, что знает PowerBuilder, — это имя DSN. На этой основе я устанавливаю соединение.
На целевом компьютере я настраиваю ODBC с тем же именем DSN и необходимыми драйверами. Таким образом, вы получаете некоторую гибкость в развертывании. Например, я могу разработать, используя DSN ‘db’, ссылаясь на компьютере моего разработчика на базу данных ‘dev’ или сервер ‘server_dev’ и развернуть на целевой машине, где ‘db’ ссылается на базу данных ‘prod’ на сервере ‘productionServ’.
Помимо проблем с совместимостью, может даже случиться так, что первым является MySQL, а другим — Oracle.
В любом случае крайне важно установить драйверы, позволяющие получить доступ к нужной базе данных на целевой машине, и, если вы используете DSN, настроить ее.
Ответ №2:
Поскольку вы сказали, что перепутали odbc.ini и registry, давайте начнем оттуда.
Предполагая, что требуемое подключение ODBC настроено на вашем компьютере (как вы сказали),
- Откройте редактор реестра (Win R, regedit) на вашем компьютере.
- Перейдите по пути «HKEY_CURRENT_USERSOFTWARE ODBC ODBC.INI». Примечание: «HKEY_LOCAL_MACHINE» может использоваться для многопользовательских компьютеров.
- Щелкните правой кнопкой мыши на вашем «Подключении ODBC» и экспортируйте. Сохраните файл (*.reg). (открытие этого файла в блокноте даст вам некоторые идеи о том, как его настроить.)
- Также сделайте то же самое для «HKEY_CURRENT_USER SOFTWARE ODBC ODBC.INI Источники данных ODBC «. Объедините оба файла в один (откройте файлы *.reg в блокноте и объедините текст).
Теперь у вас есть следующие параметры для настройки ODBC на ваших целевых компьютерах:
- Этот файл (*.reg) может быть выполнен на целевой машине (будьте осторожны, путь к драйверам может отличаться на целевых машинах.).
- Если у вас есть программа установки, попробуйте включить код для записи значений реестра из программы установки.
- Используйте PB-функцию RegistrySet() для создания собственного ODBC-соединения, если оно НЕ существует.
Краткое описание того, что мы пытаемся: Экспортировать записи реестра (в виде файла *.reg) с компьютера разработчика и создать аналогичные записи реестра на целевых компьютерах, используя любой из 3 методов, перечисленных выше.