[ ultraKeen @ 29.10.2004. 07:33 ] @
Kada neka SQL stor.procedura koristi neku sistemsku tabelu RDB$* za recimo neki SELECT, SVAKI user koji bi da se (cak samo!) konektuje na bazu sa takvom procedurom - MORA imati GRANT SELECT pravo nad tom/doticnom sistemskom tabelom IAKO! NE poziva tu/doticnu proceduru. U suprotnom, problemi nastaju vec pri konekciji na bazu: SQL error code = -206, Column unknown <ta-i-ta-kolona-sistemske-tabele>, gde je <ta-i-ta-kolona...> prva u WHERE uslovu SELECT-a koji koristi ona procedura...

Zasto?

(kada user NIGDE ne zove onu proceduru)
[ mbabuskov @ 29.05.2006. 11:32 ] @
Verovatno koristis Classic?

Prilikom prve konekcije kod SuperServera, a prilikom svake kod Classic-a se ucitavaju sve sistemske tabele. Firebird onda njihov sadrzaj smesta u memoriju, tzv. metadata cache. To se radi da se ne bi prilikom svakog upita ucitavali podaci iz sistemskih tabela.

E sad, ako koristis Classic, to se ne desava sa SYSDBA privilegijama kao kod SuperServera, vec sa privilegijama tekuceg korisnika. Posto on po defaultu nema prava nad sistemskim tabelama, tu nastaje problem.

Resenje ti je ili da ne koristis sistemske tabele u procedurama, ili da grantujes prava za sve sistemske tabele svim userima. Nazalost ne postoji neko lako i bezbolno resenje, osim mozda da predjes na SuperServer.