Настройка odbc postgresql windows 7
В данном примере рассматривается ситуация, когда ZuluGIS/ZuluServer и PostgreSQL работают на одном ПК.
Для работы с PostgreSQL следует установить ODBC драйвер (Unicode) для 32 битной версии!
Настройка происходит в несколько шагов:
Шаг 1. Создание системного DSN источника
Первоначально, при создании ODBC источника данных надо настроить системный DSN с помощью операционной системы Windows. Для этого:
Рисунок 400. Администратор источника данных ODBC
В открывшемся окне выберите драйвер PostgreSQL Unicode
Рисунок 401. Выбор драйвера подключения
Data Source – имя источника данных ( Zulu_PostgreSQL ).
Password – пароль для пользователя «postgre», с использованием которого будет осуществляться подключение к базе данных (на сервере с PostgreSQL должен быть предварительно создан пользователь).
Рисунок 402. Свойства соединения системного источника
Нажать кнопку Save для сохранения системного DSN источника.
Шаг 2. Создание источника данных ZuluGIS
Для создания источника в ZuluGIS:
Рисунок 403. Создание источника данных
Перейдите на вкладку Источник данных компьютера и выберите источник, созданный в шаге 1.
Рисунок 404. Выбор системного источника данных
Указать данные авторизации
Далее можно использовать передавать учетные сведения ZuluServer для авторизации.
Рисунок 405. Свойства соединения пользовательского источника
Нажать ОК для сохранения свойств PostgreSQL соединения.
Укажите дополнительно в параметрах источника:
Рисунок 406. Параметры источника данных Zulu
Теперь источник доступен для дальнейшего использования и публикации на ZuluServer.
Не забудьте настроить в PostgreSQL разрешения (permissions) для базы для дальнейшей работы!
Источник
Microsoft Windows и PostgreSQL
Покольку PostgreSQL изначально писался для UNIX систем, то неудивительно, что до сих пор не существует версии для Microsoft Windows.
Впрочем, в документации к версии 6.5 есть упоминание, что для Windows NT портирование серверной части с использованием библиотеки Cygnus было недавно завершено. Сам я, правда, не смотрел и не пробовал, но если есть люди, у которых это работает, то прошу откликнуться и черкнуть пару строк.
Однако как для Windows95/98 так и для Windows NT с давних пор существовали ODBC и JDBC драйвера, при использовании которых можно было вполне сносно работать с сервером PostgreSQL, работающим на каком-либо UNIX’е. Далее речь пойдет об ODBC драйверах.
ODBC драйвера и их установка
Первый и наверняка наиболее серьезный вопрос состоит в наверное уже крылатой фразе: «А где возьмешь?». Что сказать вам по этому поводу? Взять можно во многих местах. В FAQ к PostgreSQL нас отсылают на http://www.openlinksw.com. Ну был я там, но ничего не понял. Где брать, как брать? Если у кого-то получилось, то напишите мне с подробной инструкцией для идиотов, чтобы ваша инструкция заменила то нытье, что я здесь пишу. А пока позвольте мне рассказать как я нашел ODBC драйвера.
Я пошел другим путем. А именно через поисковые сервера. Среди той кучи ссылок, что я получил на запрос «Postgres+ODBC» большая часть просто не работала, а подавляющее большинство остальных выдавало нечто совершенно древнее. Тем не менее я нашел кое-что, а именно файл postdrv.exe, который я положил сюда, дабы не заставлять вас тратить время понапрасну.
Это самораспаковывающийся архив в установкой через InstallShield. То есть все, что вам нужно сделать для установки, это скачать данных файл в какой-нибудь временный каталог, а затем запустить его. Однако, для того, чтобы начать работать, установки недостаточно. Вам еще необходимо произвести настройку ODBC через ODBC Administrator, который вызывается из окна Панель управления (Control Panel) под именем 32bit ODBC.
Перед тем как начать описание процесса настройки хочу сразу же сделать замечение. Эти ODBC драйвера не первой свежести (кто скажет, где найти свежее скажу спасибо). В настройках вы увидите, что поддерживаются протоколы только до версии PostgreSQL 6.4, хотя есть уже PostgreSQL 6.5. Однако, я опробовал эти драйверы и могу с уверенностью сказать, что с версией 6.5 они вполне работают.
Настройка OBDC драйверов
Итак, запускаем 32bit ODBC. В результате получаем диалоговое окно, следующего вида:
У вас в окне по всей видимости будет пусто. У меня, как видите уже установлен ODBC драйвер для Interbase. Нажимаем кнопку Add. и снова получаем диалоговое окно вида:
Выбираем «PostgreSQL» и нажимаем кнопку Готово. В результате имеем еще одно окно вида:
Параметр Port вам необходимо сменить только в том случае, если вы работаете с нестандартным портом (см. файл /etc/postgresql/postmaster.init на предмет изменения номера порта).
Как видно из рисунка, есть еще две кнопки Driver и DataSource.
При нажатии на кнопку Driver получаем окно вида:
При нажатии на кнопку DataSource получаем окно вида:
Сразу же рекомендую убрать флажек ReadOnly. А вот Protocol нужно установить в зависимости от версии PostgreSQL, с которой вы работаете. Я также включаю флажек Show Column, так как он не мешает. А вот для чего нужны остальные настройки я снова буду рад услышать от грамотных людей.
Финал
Ну вот собственно и все. Теперь вы можете работать с сервером PostgreSQL, с помощью любой программы в Microsoft Windows, которая знает как общаться через ODBC драйвера.
Замечания по Delphi
Эти два случая из моего опыта работы с PostgreSQL из Delphi.
Первую фичу я обнаружил на методе AppendRecord. Оказывается, чтобы данный метод отработал успешно, нужно первым элементом списка ставить nil, иначе, при выполнении возникнет ошибка. Т.е. теперь AppendRecord будет выглядеть, например так:
а не так, как делается, например, при работе с Interbase:
Вторая фича касается какой-то веселой ситуации, возникшей у меня один раз с сервером. По какой-то причине, тот отказывал в обслуживании клиентам. Похоже, это произошло потому, что в этот момент выполнялся какой-то процесс по обслуживанию базы данных на самом сервере.
Чем было вызвано зависание программы, я даже не знаю. По идее, должен был отработать тайм-аут, по истечении которого должна была появиться ошибка, но этого не случилось. Может виновата кривость BDE, может ODBC драйвера.
Источник
Настройка odbc postgresql windows 7
ODBC драйвера и их установка
Настройка OBDC драйверов
У вас в окне по всей видимости будет пусто. У меня, как видите уже установлен ODBC драйвер для Interbase. Нажимаем кнопку Add. и снова получаем диалоговое окно вида:
Важное замечание :
Я установил, что заполнение полей Username и Password не является необходимым. Более того, оно вредно, поскольку Windows хранит эти значения в реестре в PLAIN TEXT. Т.е. любой пионер, который научился пользоваться программой regedit может прочитать ваш пароль!
Параметр Port вам необходимо сменить только в том случае, если вы работаете с нестандартным портом (см. файл /etc/postgresql/postmaster.init на предмет изменения номера порта).
При нажатии на кнопку Driver получаем окно вида:
При нажатии на кнопку DataSource получаем окно вида:
Финал
Замечания по Delphi
Эти два случая из моего опыта работы с PostgreSQL из Delphi.
Вторая фича касается какой-то веселой ситуации, возникшей у меня один раз с сервером. По какой-то причине, тот отказывал в обслуживании клиентам. Похоже, это произошло потому, что в этот момент выполнялся какой-то процесс по обслуживанию базы данных на самом сервере.
Симптомом послужило то, что при обращении к PostgreSQL из программы на Deplhi, сама программа весилась намертво. При этом курсор принимал на экране характерную форму при выполнении SQL запроса. Однако этот запрос все продолжал выполняться и продолжал. Через 5 минут мне это надоело и я снял задачу принудительно.
Чем было вызвано зависание программы я даже не знаю. По идее должен был отработать тайм-аут по истечении которого, должна была появиться ошибка, но этого не случилось. Может виновата кривость BDE, может ODBC драйвера.
Настройка ODBC драйвера PostgreSQL
Диалоговое окно «Driver» в «Advanced Options»
DEFAULTS
Нажмите эту кнопку для восстановления настроек по умолчанию.
Disable Genetic Optimizer
Автоматически выключает оптимизатор во время соединения. Это удобнее, чем выставлять специальную настройку в параметрах соединения. Данная особенность была добавлена, когда мы заметили, что сервер имеет проблемы при оптимизации некоторых запросов.
KSQO (Keyset Query Optimization)
Данная особенность помогает определенным запросам отрабатываться на сервере не заваливая его. Некоторые приложения, например MS Jet Database Engine используют «keyset» запросы вида: Запросы такого типа будут приводить к заваливанию сервера без KSQO.
CommitLog (C:\psqlodbc.log)
В данный файл происходит журналирование соединений с сервером. Его хорошо использовать для отладки.
Recognize Unique Indexes
Этот флаг управляет результатом вызова SQLStatistics() для уникальных индексов. По умолчанию он не установлен. Это позволяет Access 95 и Access 97 спрашивать пользователя об индексах во время соединения.
Read Only (default)
Новые источники данных будут наследовать состояние «Только для чтения».
Use Declare/Fetch
Если флаг выставлен (по умолчанию это так), то драйвер автоматически использует создание курсора и fetch для управления операторами SELECT, оставляя 100 строк в кэше. В большинстве случаев это сильно помогает, когда вы заинтересованы только в чтении, а не в обновлении. Результаты не занимают много памяти для буферизации всего списка изменений. Если флаг сброшен, то курсор использоваться не будет, а драйвер будет выдавать все данные результата. Для очень больших таблиц, это очень плохо и может привести к тому, что будет использована вся память Windows. Однако, это может более лучшим образом управлять UPDATE, так как таблицы не остаются открытыми, как в случае использования курсора. Тем не менее, из-за более экономного расхода памяти, использование данного флага все равно дает лучшую производительность.
Parse Statement
Если флаг выставлен, то драйвер будет анализировать операторы запроса SQL для определения колонок и таблиц, а также статистики о них, такой как точность, псевдонимы, нулевые записи и т.д. Все это можно получить через вызовы SQLDescribeCol, SQLColAttributes и SQLNumResultCols. Анализатор корректно определяет колонки, которые являются результатами выражений и функций, не взирая на сложность, но он не пытается определить типы данных или точность для этих колонок.
Cache Size
Когда используются курсоры, это значение определяет размер кэша в строках. Если курсоры не используются, то значение говорит сколько памяти занимает результат запроса в любой заданный момент. По умолчанию кэш занимает 100 строк в любом случая.
Max Varchar
Максимальная точность типов VARCHAR и BPCHAR(char[x]). По умолчанию она равна 254 символа, так как 255-й является завершающим нулем.
Max LongVarChar
Максимальная точность типа LogVarChar. По умолчанию она равна 4094, так как 4095 символ является завершающим нулем. Вы можете даже задать размер (-4), который представляет собой константу SQL_NO_TOTAL.
SysTable Prefixes
Дополнительные префиксы имен таблиц, по которым будут узнаваться системные таблицы. Драйвер уже будет считать имена, начинающиеся с «pg_» системными таблицами. Здесь же вы можете добавить свои. Отделяйте кажный префикс друг от друга точкой с запятой.
Connect Settings
Эти команды будут посланы серверу при успешном соединении. Для отделения команд друг от друга используйте точку с запятой. Здесь теперь можно управлять любым запросом, даже если он возвращает результаты. Результаты однако будут отбрасываться.
Диалоговое окно «Data Source» в «Advanced Options»
Read Only
Если не установлен, то наборы данных можно будет изменять. Для новых наборов данных, по умолчанию берется значение из диалогового окна Driver.
Connect Settings
Драйвер посылает эти команды к серверу после успешного соединения. Он делает это ПОСЛЕ того как отправит Connect Settings, заданные в диалоговом окне Driver. Для отделения команд друг от друга используйте точку с запятой. Здесь теперь можно управлять любым запросом, даже если он возвращает результаты. Результаты однако будут отбрасываться.
Row Versioning
Разрешает приложениям определять какие данные были изменены другими пользователями, пока вы пытались изменить строку. Это также ускоряет процесс обновления так как даже для одной колонки нет нужды перечислять остальные значения для обновления строки. Драйвер использует системное поле PostgreSQL «xmin» чтобы разрешить Row Versioning. Продукты Microsoft также могут использовать эту возможность. Смотрите FAQ для подробностей.
Show System Tables
Драйвер будет считать системные таблицы обычными в SQLTables. Это хорошо если вы хотите работать с системными таблицами.
Protocol
Выбирайте протокол по номеру версии вашего сервера PostgreSQL.
Источник