I have an application that is installed on a server (A) in a DMZ. It mostly uses the embedded database, but one table is connected to Pervasive running on an internal server (B), behind a firewall.

This is setup using "database mode", so in my dfbtrdrv.int file on server A I have:


and in the INT file for this table I have:

URI btrv://<user>@<dbname>?table=virksso&pwd=<pass>

In Pervasive, security is enabled for this database, so "Database security" is set to "Local database authentication" and "Btrieve security" is set to "DB authentication and authorization".

Using this setup the table on server B is accessible from server A using the MicroKernel engine only through port 3351, so this is the only port opened in the firewall.

This works - but opening the table is extremely slow (22 to 26 seconds to be exact)!

I ran a network trace, and I can see that it is caused by several attempts to reach server B on port 445, then ICMP Echo, then port 139. Only after waiting for responses on these for some time, and retransmitting, connection is made on port 3351 and within a few milliseconds the table is opened.

Now I don't know if it is the driver or the Pervasive client that does this, but I'm guessing the first, since this is what the driver would have to do if a UNC path was used and it was not in database mode.

Is there maybe something "left over" that still attempts to reach the server this way? I have tried toggling the various Pervasive client settings, but none of them change anything.

Opening port 445 or 139 in the firewall is *not* going to happen.