![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Firebird, проблема с коннектом
Handbrake © (2008-11-27 16:13:00)Уважаемые Мастера!
Firebird 2.0, выполняется сервисом
firebird.conf:...
# ----------------------------
# Database Paths/Directories
#
DatabaseAccess = none
...
aliases.conf:
#
# List of known database aliases
# ------------------------------
#
# Examples:
#
#
dummy = C:\FBDB0\my02.fdb
ConvDB = C:\FBDB0\convention.fdb
В приложении использую IBDatabase.
На Сервере подключение к БД через имя алиаса проходит, на Клиенте - нет ( unavailable database. ).
Чего я делаю не так, Чего не докрутил ?
Виталий Панасенко (2008-11-28 14:56:00) [1]
> Его просто берешь с сервера и ставишь на клиент.
вот именно
Handbrake (2008-11-28 14:33:00) [2]Кстати, ошибочка в [5]
хотел написать не
dummy = MyCompAsFBServer.OurCommunity.local:Dummy:C:\FBDB0\my02.fdb,
а
dummy = MyCompAsFBServer.OurCommunity.local:C:\FBDB0\my02.fdb
Handbrake (2008-11-28 14:28:00) [3]To Правильный$Вася (28.11.08 14:05) [9]
Понятно, просто я мыслил по аналогии c Oracle(не работал с этой СУБД как программист, сопровождал маленько). Там вроде такой файлик есть tnsnames.ora,
В первом приближении, что-то типа:
NSNORA=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = MyCompAsFBServer.OurCommunity.local)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora10mr)
)
)
Его просто берешь с сервера и ставишь на клиент.
Т.е. при коннекте указываю User, Password, NSNORA. Достаточно удобно. Я думал в Firebird похоже.
Правильный$Вася (2008-11-28 14:05:00) [4]
> даже Ваше убедительное "конечно" не проясняет мне ситуацию.
нельзя потому, что клиент не знает, где именно он должен разжиться алиасом
вот когда указываешь имя сервера, он уже там и проверяет наличие алиаса
а так серверов в сети - вон, полный интернет
все перебирать будешь?
Handbrake (2008-11-28 12:46:00) [5]To PEAKTOP © (28.11.08 12:35) [7]
Обошлось, как видите, без "хрустального шара" :). Ваше № 3
To Виталий Панасенко (28.11.08 12:33) [6]
> конечно, нельзя
даже Ваше убедительное " конечно" не проясняет мне ситуацию...
PEAKTOP (2008-11-28 12:35:00) [6]Во-первых, укажите вариант сервера (SuperServer, ClassicServer, SuperClassicServer).
Во-вторых, неплохо бы указать версию билда (например, 2.0.5.13200)
------------------------
Если у тебя приложение не коннектиться к серверу по сети ни так, ни эдак, то проблема не в сервере, а в сети.
1) Брандмауэр виндов. Либо настроить нормально, либо отключить совсем.
2) Никаких динамических IP в локальной сети. Прописать в настройках IP статично.
3) Строка подключения в виде '192.168.0.1:MyDataBaseAlias'
4) Надеюсь, не надо напоминать, что имена алиасов из aliases.conf РеГиСтРоЗаВиСиМыЕ.
После этого попытайся воспроизвести снова.
-------------------
Мне мой хрустальный шар подсказывает, что еще дело здесь может быть в манифесте. Найди файлы в папке ($firebird)/bin
Microsoft.VC80.CRT.manifest
msvcp80.dll
msvcr80.dll
и скопируй их в папки ($firebird)/intl и ($firebird)/udf
Виталий Панасенко (2008-11-28 12:33:00) [7]конечно, нельзя
Handbrake (2008-11-28 12:29:00) [8]Коллеги! Извините, водил Вас "за нос". Прошу не очень больно бить ногами:
> А брандмауэр выключен? или хотя бы порт 3050 открыт на клиенте?
Теперь работает и при включенном Брандмауэре, порт правда открыт.
У меня в тест-программе строки:
IBDatabase1.Connected := false;
IBDatabase1.DatabaseName := Edit1.Text;
IBDatabase1.Connected := true;
В Edit1 ввел 'Dummy'
когда на сервере запускаешь эту программку все нормально.
Но на клиенте-то нужно указывать еще и путь по локальной сети до машины, где расположена БД, т.е, например 'MyCompAsFBServer.OurCommunity.local:Dummy'. Блин, даже мысли не пришло такой! Короче, Я Не Прав:)
Теперь возникла мысль, а нельзя ли в aliases.conf на клиенте указать алиас так:
dummy = MyCompAsFBServer.OurCommunity.local:Dummy:C:\FBDB0\my02.fdb
чтобы при коннекте указывать только Dummy ?
Не получилось, хотя я не очень понял почему. Может поясните?
Спасибо Всем за участие.
Виталий Панасенко (2008-11-28 11:28:00) [9]А брандмауэр выключен? или хотя бы порт 3050 открыт на клиенте?
Handbrake (2008-11-28 10:21:00) [10]Чего то я сбит с толку:(
на сервере в firebird.conf:
...
DatabaseAccess=None
...
на самом сервере не могу соединиться ни по абсолютному имени, ни по алиасу (Access to database ... is denied by server administrator).
Ладно, теперь делаем исправление
на сервере в firebird.conf:
...
#DatabaseAccess=None
...
и перезапускаем сервис FirebirdServer. Теперь и по абсолютному имени файла БД и по алиасу соединение на сервере проходит успешно. На клиенте не коннектится ни так ни эдак.
Я специально выделил знак #. В начале firebird.conf сказано, что все что стоит после #является комментарием...
Как такое понимать?
Handbrake (2008-11-27 16:33:00) [11]
> qqq (27.11.08 16:20) [1]
> на клиенте не по алиасу получается?
Проверил, сейчас не получается, но недавно, когда разбирался с клиентским коннектом (я новичок в Firebird) кажется проходило. При этом в firebird.conf было:
...
# ----------------------------
# Database Paths/Directories
#
DatabaseAccess = full
...
qqq (2008-11-27 16:20:00) [12]на клиенте не по алиасу получается?