Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion Groups
Database Servers
DB2InformixIngresMS SQLOraclePervasive.SQLPostgreSQLProgressSybase
Desktop Databases
FileMakerFoxProMS AccessParadox
General
General DB TopicsDatabase Theory
Related Topics
Java Development.NET DevelopmentVB DevelopmentMore Topics ...

Database Forum / Pervasive.SQL Topics / September 2008

Tip: Looking for answers? Try searching our database.

btrieve with IDS (Version9.x)

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
nmm - 25 Aug 2008 13:36 GMT
Hi,

i have a native btrieve-application, which specifies the complete
paths to the (btrieve) data-base files explicit. Therefore the
directory containing the data-files has to be mapped to a local drive
letter on the clients via a "release".
Unfortunately btrieve needs write - rights on that mapped drive,
allthough the client itself never changes the files: the requests to
update or create are send to the server-engine on the server! And the
engine changes the files!
So one can imaagine, that it shoubd be possible to omit write-rights
to the datafiles on windows-system-level, but the btrieve-server,
which runs on the server with more rights, should be able to change
the files.

Unfortunatley this semms impossible.

So I wonder, if one can avoid mapping using IDS:

The documentation of IDS is staggering poor! So I made some experiments:

The datafiles are at d:\project\data ("d:" is a local drive on the
server). The server has IP-Adress "x.y.z.u".

So I switched "Use IDS" on the Server-engine to "ON" and put to the
idshost-file

#############
# j:                   www.pe.com       # Drive mapping
z:  x.y.z.u
#############

The drive z: is not mapped on the client!

If I open a file z:\\project\data\test.dat within the application, I
get the error 172:  Database name not found.

OK, but using btrieve I dont have any Database name!

I turn "trace operation" to ON and select OPEN(0). In the LOG-File I get

File:       "btrv://x.y.z.u/www.pe.com?dbfile=project%5Cdata%5Ctest.dat"

This is strange, because, the line in idshost where the www.pe.com is
mentioned, is commented out (line starts with #)!

If I change the line say to

#############
# j:                   www.peXYZ.com       # Drive mapping
z:  x.y.z.u
#############

I get in the log:

File:
"btrv://x.y.z.u/www.peXYZ.com?dbfile=project%5Cdata%5Ctest.dat"

This is also so, if I put

#############
# j:                   www.peXYZ.com       # Drive mapping
###
###
###
z:  x.y.z.u
#############

to idshost.
If idshost contains only the line

z:  x.y.z.u

I get:

File:       "btrv://x.y.z.u/%c2%92%7C?dbfile=project%5Cdata%5Ctest.dat"

If I use

#############
# j:                   www.peXYZ.com       # Drive mapping
z:  x.y.z.u  abcdef
#############

then I get (as expected:)

File:       "btrv://x.y.z.u/abcdef?dbfile=project%5Cdata%5Ctest.dat"

If I do not use idshost, the logfile looks like (d$ is mapped on the
client as "F:"):

File:       "\\mycomputer\D$\project\data\test.dat"

without "btrv:" and so on (and nothing about the local
"drive" "F:"!)

How can I avoid the "dbfile=" construction in the ids-replacement?

I would expect somthing like

z:  x.y.z.u/D$

in the idshost-file, but doing so, I get a  status-code 3103 (the
server is running!).

I suppose, that I do something wrong here. Any idea, how to make it
correct, would be welcome!
Thanks in advance!

Mircea
BtrieveBill - 25 Aug 2008 21:13 GMT
The "database" parameter allows you to specify which database you are
accessing.  Normally used by SQL only, the use of this paramerter in IDS
is also important.

You can test it with this IDS line:
Z:\DEMO  servername   DEMODATA

Then, open the file: "Z:\DEMO\PERSON.MKD" and you'll find the file in
the DEMODATA database (C:\PVSW\DEMODATA) gets opened correctly.

For your own application, you should specify the database as well, so
that the base location can be found.  If the files are being opened via
the Z:\PROJECT\DATA directory, and if your database (i.e. DDF files) is
in Z:\PROJECT\DATA, then the line will look like this:

Z:\PROJECT\DATA\     servername     databasename

Try to avoid using the IP address, which connects more slowly.

BTW, this by itself may not work around the rights issue.  The
Client/Server database engine enforces the OS rights of the user.  As
such, if the user has WRITE rights, then he or she will be able to write
to the database.  This is the way Btrieve security was designed long ago.

Using IDS like this will enable you to "Hide" the share, but users will
still have the needed rights.  If you want to remove OS-level rights
entirely, then you'll need to set up the "advanced Btrieve security" for
this database.  This is a LOT more complicated, and I strongly encourage
you to set up a test environment to play with this, first, since you can
actually make the system unusable if you're not careful with this one.
    Goldstar Software Inc.
    Pervasive-based Products, Training & Services
    Bill Bach
    BillBach@goldstarsoftware.com
    http://www.goldstarsoftware.com
    *** Next Pervasive Service & Support Class - Nov 2008 ***

> Hi,
>
[quoted text clipped - 106 lines]
>
> Mircea
nmm - 04 Sep 2008 14:08 GMT
Thank you for these interesting remarks!

What you mean with the "advanced Btrieve security" is what they call
"Database Security Model". I will try
"Setting Up Btrieve Security"
(<http://www.pervasive.com/library/docs/psql/870/whatsnew/whatsnew-5-1.html#wp74303>).

Regards
Mircea

BtrieveBill schrieb:
> The "database" parameter allows you to specify which database you are
> accessing.  Normally used by SQL only, the use of this paramerter in IDS
[quoted text clipped - 143 lines]
>>
>> Mircea
BtrieveBill - 05 Sep 2008 17:58 GMT
That's the one.
    BB

> Thank you for these interesting remarks!
>
[quoted text clipped - 154 lines]
>>>
>>> Mircea
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.