Citat:
loshmiscg: Moje osnovno pitanje je bilo da li može da se Firebird baza postavi bez servera.
Hteo si da koristiš bazu a da ti nije pokrenut server (fbserver.exe) jel tako? Pokazali smo da može-preko embedded servera..šta je embedded server?
To je dll koji sadrži funkcionalnost klijenta i servera istovremeno.
Da li embedded (eng. ugrađeni) drži otvoren port? Ne drži, direktno pristupa fajlu baze podataka (.fdb, .gdb).Zove se isto kao klijentska biblioteka
fbclient.dll.
U čemu je stvar? U tome što Firebird ima svoju klijentsku biblioteku (fbclient.dll), a Interbase je imao svoju (gds32.dll),one su veoma slične ali ne
i identične.
Sigurno te je program za instalaciju FB-a pitao da li hoćeš da ti iskopira "wrapper" biblioteku gds32.dll u sistemski direktorijum system32-pogledaj
da li je tamo imaš.To je zbog podrške aplikacijama pisanim baš u Delphiju ili C++ Builderu jer one ne prepoznaju fbclient.dll.Jel ti sad jasno?
Koliko ja znam Delphi (preko IBX) registruje samo tu gds32.dll biblioteku,a ignoriše fbclient.dll. Ja mislim da je ono što se događa:da tvoja aplikacija
prvo traži gds32.dll u system32 dir a iskulira fbclient.dll (tj. fbembed.dll) u dir-u gde je tvoja aplikacija (Windows programi prvo traže u system32).Preko EMS verovatno pristupaš preko ODBC-a (a time i preko fbclient.dll) pa se on ne buni, a Delphi koristi gds32, ne registruje dignut server i vraća ti grešku.
Da bi smanjio konfuziju,pogledaj gde su ti biblioteke: fbclient.dll,gds32.dll,fbembed.dll. Kada hoćeš da testiraš embedded onda oradi ovo:
1) Isključi fbserver.exe (preko Gardijana-u Control panelu imaš aplet koji za to služi, izbegavaj gašenje servera preko Task managera)
2) uđi u system32 i privremeno preimenuj gds32.dll u npr. gds32.dl_ i fbclient.dll u fbclient.dl_ (da tvoja aplikacija ne može da ih vidi)
3) stavi u dir tvoje aplikacije fbembed.dll i preimenuj ga u gds32.dll (pošto IBX ne zna za fbclient.dll).
4) ostavi prazne parametre u IBDatabase komponenti za username/pass, navedi samo ime fajla baze (obično ima .fdb ili .gdb extenziju-po kon
venciji)
5)Pokreni tvoju aplikaciju-treba da ostvari pristup kako treba.
Kada hoćeš da praviš običnu klijent/server aplikaciju:
1)vrati imena svih onih biblioteka,a sad preimenuj taj gds32.dll u diru tvoje aplikacije u npr. gds32.dl_,sada
tvoja aplikacija nalazi običnu gds32.dll u system32 i radi kao običan mrežni klijent (ali mora da ima parametre za IP adresu/ime servera,usrname/pass
u IBDatabase komponenti).
Izbegavaj istovremenu upotrebu svih tih biblioteka, nego odvojeno testiraj embedded i obične klijent/server aplikacije da ne dolazi do kolizije,po
mogućnosti stavi embedded aplikaciju na neki medijum (idealno na memorijsku karticu-jer se obično tako i koriste,za mobilne baze podataka).
Nadam se da ovo pomaže,kaži ako ti nešto nije jasno.
Deki.
[Ovu poruku je menjao Mr. Rejn dana 23.11.2006. u 20:27 GMT+1]
Ag + Na -> Xe