Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

Как определить наличие Embedded версий баз?   Найти похожие ветки 

 
Piter ©   (2004-08-10 15:23) [0]

Вот моя программа использует IB/FB базу. Компоненты IB в дельфе сами загружают необходимую gds32.dll - но она может быть как от сервера Ib/FB, так и локальная Embedded (Firebird Embedded, Yaffi embedded). Программе в общем все равно (обрщение идет к локальной базе).
Но дело в том, что у серверной gds32.dll есть аутентификация, а у локальной нету. Так вот вопрос - а как определить какая gds32.dll используется - серверный вариант или локальный? Это для того, чтобы выводить или не выводить окошко запроса логина/пароля


 
Sergey13 ©   (2004-08-10 15:29) [1]

Проверить наличие длл-ки в папке программы?


 
Danilka ©   (2004-08-10 15:32) [2]

[1] Sergey13 ©   (10.08.04 15:29)
не факт. там может быть и длл-ка от нормальной версии.


 
Vlad ©   (2004-08-10 15:33) [3]


> Piter ©   (10.08.04 15:23)  

Я так понимаю, речь о твоем клиенте форума?
Одно только неясно. Зачем искать уже установленную версию IB, когда есть прекрасная весчь - Yaffil Personal. Представляет собой всего одну библиотеку gds32, там и клиент и сервер в одном флаконе. Достаточно кинуть ее в одну папку с твоей программой и ни о чем более не думать, твоя программа автоматом подхватит именно ее.


 
Sergey13 ©   (2004-08-10 15:36) [4]

2[2] Danilka ©   (10.08.04 15:32)
Может. А нафига?

2Piter ©   (10.08.04 15:23)
А может проще. Не прошел конект - выдавать запрос логина.


 
Danilka ©   (2004-08-10 15:37) [5]

[3] Vlad ©   (10.08.04 15:33)
FB Embedded  - то-же самое.
А с другой стороны, зачем эта длл-ка, если у юзера установлен полноценный сервер?

Piter ©   (10.08.04 15:23)
Можно попробовать подключиться без пароля и в случае неудачи запросить имя и пароль. правда, как-то не слишком серьездно. :)
Проще в настройках галочка. И полный путь до клиентской библиотеки, а то, если не ошибаюсь, ты ее переименовываешь? :))


 
Danilka ©   (2004-08-10 15:38) [6]

[4] Sergey13 ©   (10.08.04 15:36)
> Может. А нафига?

Всякое может быть. :)) Я когда разные версии смотрел на всякий случай клиентскую библиотеку в каталог с программой пихал. :))


 
Vlad ©   (2004-08-10 16:04) [7]


> Danilka ©   (10.08.04 15:37) [5]
> [3] Vlad ©   (10.08.04 15:33)
> FB Embedded  - то-же самое.
> А с другой стороны, зачем эта длл-ка, если у юзера установлен
> полноценный сервер?

А зачем себе морочить голову с определением версии установленного сервера. Плюс еще такая деталь. Если имеется установленный сервер, то в нем скорее всего будут логин/пароль отличные от sysdba masterkey, значит еще одну настройку в программе делать надо для логина/пароля сервера. А оно надо?


 
Rule ©   (2004-08-10 16:12) [8]

Действительно, в данном случае я рекомендую явно в каталог программы ложить сервер и все, чтоб лишнего гемороя не возникало


 
Piter ©   (2004-08-10 16:39) [9]

Vlad ©   (10.08.04 16:04) [7]
А оно надо?


надо. Тогда не придется качать из интернета embedded версию библиотек. Это около 1,5 Mb - что для некоторых достаточно критично, тем более на клиенте они хотят сэкономить трафик.

И если у них уже есть сервер - почему бы им не пользоваться...

Sergey13 ©   (10.08.04 15:36) [4]
А может проще. Не прошел конект - выдавать запрос логина

Danilka ©   (10.08.04 15:37) [5]
Можно попробовать подключиться без пароля и в случае неудачи запросить имя и пароль


да, я тоже об этом подумал. Там возникает вполне определенное исключение... Просто хотелось спросить - может еще какие способы есть...


 
Vlad ©   (2004-08-10 17:55) [10]


> Piter ©   (10.08.04 16:39) [9]


> Тогда не придется качать из интернета embedded версию библиотек

Ну во-первых скачивают-то всего один раз.
Во вторых зачем им отдельно скачивать, зашей ее в дистрибутив.
Кстати, та библиотека gds32.dll обычным rar жмется до 500 кб
Зато ты не будешь зависеть ни от чьего там сервера, у тебя будут 100% собственное средство доступа.


 
Danilka ©   (2004-08-10 18:10) [11]

Vlad ©   (10.08.04 16:04) [7]

> А зачем себе морочить голову с определением версии
> установленного сервера.

Например, мне интересно самому в базе поковыряться, своими запросами, сиквелом найти то-что именно мне надо. Если будет версия embedded, то надо вырубать клиента, а если полноценный сервер, то можно параллельно запустить ИБЭксперт.


> с еще такая деталь. Если имеется установленный сервер,
> то в нем скорее всего будут логин/пароль отличные от
> sysdba masterkey

Дык, добавить в настройки клиента параметры подклучения - какие проблемы?


 
VID ©   (2004-08-10 18:25) [12]

to Piter: я посмотрел у себя, сравнил два варианта gds32.dll: обычную для клиентов серверов и Embedded.
Так вот при просмотре инфе о версии каждой из этих библиотек (совйства, вкладка "версия"), в последней строке Special Build Description , у
Embedded значение EM
Super Server значение SS
Classic Server значение CS.

Это всё имеет отношение к Yaffil. Я не знаю как там обстоят с этим дела у FireBird и собственно Interbase, но это может быть неплохой зацепкой.

Второй вариант: банально по размеру этой библиотеки. Если она больше метра то это точно Embedded. Метод это конечно халтурный, кривоватый.

Третий вариант: лишь при ошибке подключения выводить окно, где попросят ввести пароль (а в поле "Логин" должно быть уже написано слово SYSDBA и оно не должно подлежать редактирования ReadOnly = True). И кто сказал что это плохой вариант ? Это очень и очень естественное поведение программы: если она найдёт embedded-сервер в путях поиска, то быстренько подключится никто ничё и не заметит, если же этой библиотеки не будет, а будет обычная библиотека для клиентов сервера, то при неудачном коннекте (это кстати, тоже выяснится очень быстро, клиент долго ждать не будет) появится окошко где надо будет указать пароль.

А теперь внимание! Вполне может возникнуть ситуация, что gds-сервер может быть установлен на другой машине ! Соответственно, в окне где ты будешь просить ввести пароль, так же предусмотри поле, где юзер сможет указать сетевой адрем машины, где установлен gds-сервер.

Лично я больше предпочтение отдаю третьему варианту, как максимально надёжному.

offtop: ты Raize Components - 3 посмотрел ? Ну и как ?


 
VID ©   (2004-08-10 18:34) [13]

А ещё я щас посмотрел внутрь твоей базы, вижу практически в любой таблице есть поле ID и значением этого поля является крупное число типа 1091711935,000 (double precission). Для чего это поле 7


 
Danilka ©   (2004-08-10 18:56) [14]

VID ©   (10.08.04 18:25) [12]
1. Дык Длл-ку еще найти надо, а она может быть не только в каталоге с программой. :))
2. третий вариант - вполне нормальный... но только для тех, у кого эмбеддед версия, ибо другим придется каждый раз при подключении ввобить имя и пароль.
Все-таки я считаю что лучше все это хранить в настройках: сервер или эмбеддед, параметры подключения и т.д.


 
VID ©   (2004-08-10 19:01) [15]

Danilka ©   (10.08.04 18:56) [14]
Блин ну нельзя же всё так плоско воспринимать :)

ну естественно, что однажды указанные пароль и путь к серверу, будут запомнены в каких то настройках внутри фыайла настроек, а потом использованы по умолчанию, и это окно больше не появится, и так будет до следующего раза, пока снова не возникнет ошибка подключения (вдруг сервер переехал), и снова появится окно и снова введённые данные будут сохранены...  А Отдельная секция типа "настройки подключения" в настройках проги  совершенно не нужна.

>>Длл-ку еще найти надо
что значит надо найти ? Загрузчик приложений в Windows сам занимается поиском dll, запрашиваемых приложением.
Сначала ищет в каталоге программы, потом в системных путях... ты о чём ?


 
Danilka ©   (2004-08-10 19:13) [16]

VID ©   (10.08.04 19:01) [15]
> Загрузчик приложений в Windows сам занимается поиском
> dll

Для того чтобы получить информацию о версии длл-ки, надо указать полный путь до него. К сожалению, не могу сейчас проверить и сказать точно, но по-моему именно так.


 
VID ©   (2004-08-10 19:17) [17]

Danilka ©   (10.08.04 19:13) [16]
Опять мыслим однобоко :)

Сначала приложение запускается. К нему подключаются нужные библиотеки. А потом ты уже получаешь список библиотек используемых приложением, и информацию о месторасположении каждой из них. Среди этого списка ищем gds32.dll и у нас в кармане путь к той, единственной и неповторимой gds32.dll.


 
Danilka ©   (2004-08-10 19:27) [18]

VID ©   (10.08.04 19:17) [17]
gds32.dll
Кстати, в фиребирде она имеет другое название - fbclient.dll. При этом, в ИБ эксперте можно ее выбрать. :))
Впрочем, все равно, анализировать версию или размер файла, не думаю что самое правильное решение - это нигде не документированно, в любой момент времени разработчик захочет и что-нибудь изменит.
Все-таки, настройки мне больше нравяцца. :))


 
VID ©   (2004-08-10 19:42) [19]

gds32.dll

FB предоставляет свою gds32.dll - это "библиотека-заглушка", все вызовы через неё переадресуются уже на fbclient.dll.
Сделано это для того, что бы старые приложения написаные под интербейз могли бы беспроблемно работать. Конечно новые компоненты доступа к серверу, могут работать напрямую fbclient.dll (наверняка это так, лично я не знаю, до сих пор юзаю fibplus 4.8) и вполне может возникнуть ситуация, что будет заюзана библиотека fbclient.dll. Ну в таком случае можнно в списке подключённых библиотек для анализа искать gds32.dll либо fbclient.dll. Одна из двух точно будет. Впрочем, наш спор - это лишь сотрясание воздуха, так как, всё равно самый приоритетный вариант - третий, а вариант с явно указываемыми настройками подключения в проге тебе нравится потому что это твой вариант ;)


 
Piter ©   (2004-08-10 19:50) [20]

Vlad ©   (10.08.04 17:55) [10]
Ну во-первых скачивают-то всего один раз.
Во вторых зачем им отдельно скачивать, зашей ее в дистрибутив


хех. Если я зашью в дистрибутив - то как раз каждый раз человек будет качать сервер ЗАНОВО

Vlad ©   (10.08.04 17:55) [10]
Кстати, та библиотека gds32.dll обычным rar жмется до 500 кб


Embedded версии это не только одна библиотека, как ошибочно многие думают, их там несколько.

VID ©   (10.08.04 18:25) [12]
Лично я больше предпочтение отдаю третьему варианту, как максимально надёжному.


да я уже реализовал. Именно подключаюсь, если возникает нужный мне Exception - запрашиваю пароль и опять подключаюсь...

VID ©   (10.08.04 18:25) [12]
А теперь внимание! Вполне может возникнуть ситуация, что gds-сервер может быть установлен на другой машине !


ну это перебор. Это что, и базы данных BASE.GDB ты будешь хранить на удаленном сервере?


offtop: ты Raize Components - 3 посмотрел ? Ну и как

нет, я сейчас на диалапе, а он весит 14 Mb с оф. сайта. Договорился с человеком - он мне скинет исходники 4 Mb - тогда посмотрю. Ок?

VID ©   (10.08.04 18:34) [13]
вижу практически в любой таблице есть поле ID и значением этого поля является крупное число типа 1091711935,000 (double precission). Для чего это поле 7


ну это ID ветки блин. Вот смотри URL данного топика - http://delphimaster.net/view/3-1092137014/

Вот 1092137014 и есть ID этой ветки, на самом деле это просто время ее создания в Unix формате...


 
Piter ©   (2004-08-10 19:51) [21]

Danilka ©   (10.08.04 18:56) [14]
ибо другим придется каждый раз при подключении ввобить имя и пароль.


ну так запросить пароль, если возникло исключение и сохранить его...


 
VID ©   (2004-08-10 20:14) [22]

>>ну это перебор. Это что, и базы данных BASE.GDB ты будешь >>хранить на удаленном сервере?

Блин, что значит перебор ??? твоя прога копирует свою базу в папку, ..\Base\ это правильно, но представь что САМ СЕРВЕР (я надеюсь ты отличаешь понятия GDS-Server и GDS-DataBase) установлен и запущен на другой машине в сети. а на лок машине нету сервера. Вот как ты будешь коннектится к свой базе данных, а ?

ты будет это делать так: Remote_Server_addr:С:\program files\magic forum\base\...

а по-твоему, откуда программе знать remote_server_addr ? его пользователь должен указать.

Перебора тут никакого нет ! Я тебе хороший совет даю, а ты почему то не хочешь принять.


 
Piter ©   (2004-08-10 21:36) [23]

VID ©   (10.08.04 20:14) [22]
установлен и запущен на другой машине в сети. а на лок машине нету сервера. Вот как ты будешь коннектится к свой базе данных, а ?


пользователь должен будет установить у себя сервер или локальную версию Embedded.

Ты сам представляешь что говоришь? По твоему сервер будет обращаться к базе на другом компьютере?! Ты в своем уме?


 
VID ©   (2004-08-10 21:56) [24]

Piter ©   (10.08.04 21:36) [23]
Слушай, приятель, не надо меня тут оскорблять, понял ? Если у тебя не хватает мозгов для полного понимания клиент-серверной технологии, и если ты думаешь что весь мир это лишь то что ты видишь своими глазами, то это твои проблемы.

Умерь свой пыл, и вообще научись разговаривать !


 
sniknik ©   (2004-08-10 23:49) [25]

> По твоему сервер будет обращаться к базе на другом компьютере?!
при чем сдесь сервер? в [22] про клиента, а сервер может быть на любой установлен (обычно на выделенной машине с названием "server %";о)), на то он и сервер.

ты не только читай ответы, старайся еще и понять... (мой добрый совет тебе ;)

> пользователь должен будет установить у себя сервер или локальную версию Embedded.
а вот это бред. (во многих случаях) можно конечно найти оправдание но зачем устанавливать сервер на каждой машине в сети, где запустять твою прогу? зачем они если нет общих баз/коллективной работы? смысл теряется.


 
sniknik ©   (2004-08-10 23:53) [26]

VID ©   (10.08.04 21:56) [24]

VID ©   (09.08.04 22:55) [41]

sniknik ©   (09.08.04 22:12) [40]
Бывает период когда человек воспринимает только прямые ответы, он ещё не готов саморазвиваться, "видеть между строк" и тому подобное. Ему просто нужен код. Просто я сам прошёл через такой этап, и сколь сильно это бесит мастеров столь сильно это необходимо новичкам.

Лично мне в своё время в период активного изучения мною Interbase помогал один мой друг через интернет, и чаще всего методом "прямого ответа" - т.е. код давал. Это было на самом начальном этапе, и я бездумно использовал этот код говоря спасибо и развивая проект дальше.

А потом стали возникать вопросы: Почему это именно так работает, и что если.... Как правило эти вопросы возникли, когда полученный код после некоторого использования требовалось всё-таки немного модифицировать. Вот на этом этапе новичёк готов к анализу советов.

Поэтому, лично тебе, я хочу посоветовать быть не столь категоричным в этом отношении. Тем более что ты можешь и то и другое: дать совет или просто подкинуть готовое решение.

В конце-концов, ведь не зря в гостевой книге готовых решений для дельфи (UBPFD) столько благодарных отзывов.

ИМХО.


;о)))

прямые ответы только на простые вопросы возможны да и то если спрашивающих захочет понимать... а если он ждет только одобрения того что придумал сам? даже если это бред.


 
Piter ©   (2004-08-10 23:57) [27]

VID ©   (10.08.04 21:56) [24]
не надо меня тут оскорблять, понял ? Если у тебя не хватает мозгов


непонятно кто кого оскорбляет :)

VID, ладно, хватит, давай подумаем.
Значит, база хранится у тебя на компьютере, так? Но ты хочешь использовать удаленный сервер, так?
Значит, тебе придется как миниум расшарить для сервера папку Base с базой.

Далее, что произойдет при заросе. Клиент запрашивает данные из базы, отправляет запрос на сервер. Сервер в свою очередь ПО СЕТИ начнет обращаться к файлу на твоем компьютере! А потом обработва запрос опять же тебе пошлет результат. Тебе не кажется, что сервер тут несколько лишнее звено?
Ты посылаешь запросы на удаленный компьютер для работы с твоей ЛОКАЛЬНОЙ базой.

Я вообще не уверен, что Interbase может обращаться к файлу базы на другом компьютере. Никогда не проверял - так как это имхо глупо.

Потеря производительности тебе гарантирована, сервер выполняет тупую работу - гоняет по сети данные от твоего компьютера и возвращает тебе же их. По твоему это верно? :)


 
sniknik ©   (2004-08-11 00:14) [28]

> По твоему это верно? :)
все наоборот. база лежит рядом на машине с сервером, а доступ организуется с клиента.
считай от этого(сервера) и все станет кристально ясным. VID тебе другого не предлагал.
есть сервер, подключаешся к нему где бы он не был и работаеш с той базой что на сервере. нету, работай с ембедед, кто тебе не дает? с той базой что лежит локально.


 
Piter ©   (2004-08-11 00:14) [29]

sniknik ©   (10.08.04 23:49) [25]
при чем сдесь сервер? в [22] про клиента, а сервер может быть на любой установлен (обычно на выделенной машине с названием "server %";о)), на то он и сервер


Да? А вот когда под сервер Interbae выделена машина - что, разве сама база не хранится на этой же машине? Или я чего не понимаю?

Или теперь модно каждому хранить локальную базу?

Вот запросил Vasya у сервереа данные. Сервер обратился к базе на ВАСИНОМ компьютере и вернул ему данные, так? А потом обратился к серверу Ivan и сервер прочитал базу теперь уже на компьютере ИВАНА и вернул тому данные из ЕГО базы. Значит, теперь так происходит работа серверов?

Ну что же.. учту

sniknik ©   (10.08.04 23:49) [25]
ты не только читай ответы, старайся еще и понять


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


 
sniknik ©   (2004-08-11 00:27) [30]

> ...
> Ну что же.. учту
ты както все очень по своему понял... покажи где тебе такое кто говорил?

> вероятно ты не понял постановку задачи.
наверняка. ;о) наверное потому что прочитал только последние посты...
но всетаки понял что
> я надеюсь ты отличаешь понятия GDS-Server и GDS-DataBase
ты говориш, и подразумеваеш, базу. а тебе отвечают о сервере.


 
Piter ©   (2004-08-11 00:37) [31]

sniknik ©   (11.08.04 0:14) [28]
все наоборот. база лежит рядом на машине с сервером


а, вот так. Ты думаешь это VID предлагал, значит я его не правильно понял.

sniknik ©   (11.08.04 0:14) [28]
есть сервер, подключаешся к нему где бы он не был и работаеш с той базой что на сервере


а откуда она там возьмется? Это значит пользователь должен скопировать базу на сервер, да еще и по тому же пути, что он установил программу на свой локальный компьютер? А если локально программа на C, а базы на сервере хранятся на D: ?

И вообще, где это может применяться? Дома? Это бред, дома все будет локально. В какой-то организации? И что, есть надежда, что администратор базы разрешит поместить на сервер какую-то базы от некоего Magic Forum, чтобы Васе Пупкину было удобнее по инету лазить на delphimaster?!
Да к тому же он еще и пароль от SYSDBA должен будет сказать. Хех, не туда вы смотрите...

А если другому человеку захочется использовать клиент? Он что, должен использовать ту же базу?


 
sniknik ©   (2004-08-11 01:34) [32]

> И вообще, где это может применяться? Дома? Это бред, дома все будет локально.
если пишеш для дома для семьи, то это бери ембедед фаребирд (как уже советовали) и не парься, он сам определит и сделает подключение к серверу если он есть.

> В какой-то организации?
будеш смеятся именно так и подумал, в организации (мои так и работают).

> от некоего Magic Forum
а, ... вот теперь становится более менее ясно. ;о)

> Хех, не туда вы смотрите...
ага. куда повернули туда и смотрим (а поворот определяется вопросом и инфой к нему)
на accecc не хочеш взглянуть? и локальный и несколько подключений позволяет.

> А если другому человеку захочется использовать клиент? Он что, должен использовать ту же базу?
конечно! тогда ему не придется повторно качать то что первый уже скачал. а вообще про настройки тоже уже было. можно к примеру сделать авторизацию до конекта а по ней определять сохраненный профиль этого человека, логин и пароль к базе и путь и название базы ханить в профиле. чем не вариант? а если так, то почему нельзя для сервера (если он есть и админ добрый) предусмотреть многопользовательность? тогда на 10 василиев пупкиных будет всего 1 скачка данных с сайта! (экономится 9/10 трафика)


 
Piter ©   (2004-08-11 02:18) [33]

В базе хранится также избранное и вообще данные, относящиеся к конкретному пользователю.

К тому же придется предусматривать ситуации одновременной работы с одними данными разными пользователями. Могу попариться, только вот ради чего...


 
Vlad ©   (2004-08-11 10:31) [34]


> Piter ©   (10.08.04 19:50) [20]
>
>
> Embedded версии это не только одна библиотека, как ошибочно
> многие думают, их там несколько.

в Yaffil Personal для работы требуется только ОДНА библиотека gds32.dll. Все остальное - это библиотека с UDF(ее можно не использовать или если очень надо, написать свою - меньших размеров) и менеджер памяти msvcr70.dll, который тоже нафиг не нужен, если ты не используешь UDF, или используешь, но не выделяешь в них память собственноручно.


 
-SeM-   (2004-08-11 13:41) [35]

Версию сервера можно получить через API isc_database_info с isc_info_version


 
Piter ©   (2004-08-11 16:57) [36]

Vlad ©   (11.08.04 10:31) [34]
в Yaffil Personal для работы требуется только ОДНА библиотека gds32.dll


А ты пробовал, всего лишь с одной gds32.dll collate работает?


 
Vlad ©   (2004-08-11 17:32) [37]


> Piter ©   (11.08.04 16:57) [36]

у меня с одной gds32  работает с русскими буквами и без явного collate, достаточно при создании базы указать кодировку win1251
В любом случае, те дополнительные библиотеки не влияют на collate


 
Vlad ©   (2004-08-11 17:34) [38]


> Vlad ©   (11.08.04 17:32) [37]


> В любом случае, те дополнительные библиотеки не влияют на
> collate

Имеется ввиду только Yaffil Personal


 
Piter ©   (2004-08-11 19:30) [39]

Vlad ©   (11.08.04 17:34) [38]
Имеется ввиду только Yaffil Personal


там в полной поставке подкаталог INTL есть?


 
Vlad ©   (2004-08-12 12:53) [40]

Да нет у YaP никакой полной/неполной поставки.
Когда скачиваешь что-то там "сборка классик-супер-персонал", там есть папка Yaffil.em, в которой он и лежит.
То есть всего три библиотеки: gds32, ib_util, msvcr70
Все что надо, так это взять gds32 и сунуть в одну папку с твоей программой (ну или какую нибудь системную).



Страницы: 1 2 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.032 c
4-1090927960
Sasha73
2004-07-27 15:32
2004.09.12
Как передать данные из одного роцесса в другой ?


6-1087534420
atruhin
2004-06-18 08:53
2004.09.12
Сокет на Win API


8-1088146420
0rg
2004-06-25 10:53
2004.09.12
Синхронное проигрывание звука


14-1093111146
Черный прапор
2004-08-21 21:59
2004.09.12
Какую (подерженную) иномарку выбрать


3-1091095216
Labert
2004-07-29 14:00
2004.09.12
ERWin, Sybase Power Builder