Subject Re: [firebird-support] Firebird Root Directory Resolution
Author Helen Borrie
At 10:55 PM 23/04/2006, you wrote:
>Hi All:
>My application program access a Firebird Database. I'm getting a message
>that Firebird can't open a file. The file is:
>c:\OFBG\PC
>This is the root directory of my Application program.

Is it a database? From Firebird's POV the directory where your user
application is located has no significance whatsoever UNLESS you are
using the embedded server. Are you?

>The Firebird Variable is not defined in the Environment Variables , at least
>not for me as the user in Windows XP.

Just add it, either as a global or in the env vars for your Windows login.

>Also, it's not defined in the Firebird Configuration File and I'm
>guessing it's not in the Windows Registry either.

What is "it" that you are talking about now? The FIREBIRD variable
or the Firebird root directory? If you are talking about Firebird's
root directory, that can be configured in firebird.conf via the
parameter RootDirectory. The default is
#RootDirectory =
which means Firebird will look for its pieces in the directory
immediately above the ...\bin directory where the Firebird server
executable is.

The installer - if you used it - will have written the path to its
root directory into the Registry automatically. If you subsequently
moved all the installed stuff somewhere else, then the Registry key
won't be any use until you run the instreg.exe program from the
..\bin directory in the command shell.

>So, some of the Firebird utilities or internal processes are likely
>using the Application's Root ie.c:\OFBG\PC as the root directory
>according to my understanding of Root Directory Resolution.

*ONLY* if you are running Embedded in that directory.

The key question here is - ARE YOU USING EMBEDDED or a regular
Firebird server installation?

>Now, since the user was specified as SYSDBA upon Firebird installation
>should I add this user to the list of users in the Windows Admin Environment
>Variables Properties?

Can't figure this one out.
a) if you elected to run Classic or Superserver as a service, then
the OS user running the process will be localsystem.
b) if you are running Superserver as an application, or you are
running embedded, then whatever user you are logged in as will be
running the process.

So where does "the user was specified as SYSDBA upon installation" fit in?


>Should I add a Firebird Variable to the list of Environment Variables for my
>Windows User Name

Sure. It's useful to do so, though not if you are running both a
server and embedded.

>and will that pose an identification problem when using SYSDBA?

SYSDBA is a Firebird user. The OS doesn't even know it exists.

>Should I add the Firebird Root Directory to the Firebird Configuration file?

You only need to if you have multiple Firebird servers
running. Then, you would abandon any Registry entries and
environment variables and rely on this override.

Please understand that changes in firebird.conf have no effect on a
running server. You have to shut down and restart the server for the
changes to take effect. And remember to delete the '#' symbol,
otherwise the parameter will just be ignored and the default will be used.

>Last idea, move the Application program into the Firebird Bin Directory.

No way.

So far you haven't answered any of the relevant questions in my
responses to post this weekend. If you have gotten this far, then I
suppose you are reading this one...

./heLen