Конференция "Базы" » Firebird, проблема с коннектом
 
  • Handbrake (27.11.08 16:13) [0]
    Уважаемые Мастера!

    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. ).
    Чего я делаю не так, Чего не докрутил ?
  • qqq (27.11.08 16:20) [1]
    на клиенте не по алиасу получается?
  • Handbrake (27.11.08 16:33) [2]

    > qqq   (27.11.08 16:20) [1]
    > на клиенте не по алиасу получается?


    Проверил, сейчас не получается, но недавно, когда разбирался с клиентским коннектом (я новичок в Firebird) кажется проходило. При этом в firebird.conf было:

    ...
    # ----------------------------
    # Database Paths/Directories
    #
    DatabaseAccess = full
    ...
  • Handbrake (28.11.08 10:21) [3]
    Чего то я сбит с толку:(

    на сервере в firebird.conf:
    ...
    DatabaseAccess=None
    ...

    на самом сервере не могу соединиться ни по абсолютному имени, ни по алиасу (Access to database ... is denied by server administrator).

    Ладно, теперь делаем исправление

    на сервере в firebird.conf:
    ...
    # DatabaseAccess=None
    ...

    и перезапускаем сервис FirebirdServer. Теперь и по абсолютному имени файла БД и по алиасу соединение на сервере проходит успешно. На клиенте не коннектится ни так ни эдак.

    Я специально выделил знак #. В начале firebird.conf сказано, что все что стоит после # является комментарием...

    Как такое понимать?
  • Виталий Панасенко (28.11.08 11:28) [4]
    А брандмауэр выключен? или хотя бы порт 3050 открыт на клиенте?
  • Handbrake (28.11.08 12:29) [5]
    Коллеги! Извините, водил Вас "за нос". Прошу не очень больно бить ногами:


    > А брандмауэр выключен? или хотя бы порт 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 ?
    Не получилось, хотя я не очень понял почему. Может поясните?

    Спасибо Всем за участие.
  • Виталий Панасенко (28.11.08 12:33) [6]
    конечно, нельзя
  • PEAKTOP © (28.11.08 12:35) [7]
    Во-первых, укажите вариант сервера (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
  • Handbrake (28.11.08 12:46) [8]
    To PEAKTOP ©   (28.11.08 12:35) [7]
     
     Обошлось, как видите, без "хрустального шара" :). Ваше № 3

    To Виталий Панасенко   (28.11.08 12:33) [6]
    >     конечно, нельзя


    даже Ваше убедительное "конечно" не проясняет мне ситуацию...
  • Правильный$Вася (28.11.08 14:05) [9]

    > даже Ваше убедительное "конечно" не проясняет мне ситуацию.

    нельзя потому, что клиент не знает, где именно он должен разжиться алиасом
    вот когда указываешь имя сервера, он уже там и проверяет наличие алиаса
    а так серверов в сети - вон, полный интернет
    все перебирать будешь?
  • Handbrake (28.11.08 14:28) [10]
    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 похоже.
  • Handbrake (28.11.08 14:33) [11]
    Кстати, ошибочка в [5]
    хотел написать не

    dummy = MyCompAsFBServer.OurCommunity.local:Dummy:C:\FBDB0\my02.fdb,

    а

    dummy = MyCompAsFBServer.OurCommunity.local:C:\FBDB0\my02.fdb
  • Виталий Панасенко (28.11.08 14:56) [12]

    > Его просто берешь с сервера и ставишь на клиент.

    вот именно
 
Конференция "Базы" » Firebird, проблема с коннектом
Есть новые Нет новых   [134477   +39][b:0][p:0.001]