On Windows, you can also connect to server on local machine using local transport protocol. In Firebird 2.0, implementation has switched from IPServer to XNET. In this case, the connection string is supplied without the hostname prefix, in the same way as Firebird embedded is used.
C:/db/mydb.fdb
In an attempt to get away from TCP and port 3050, I have changed my TIBDatabase connection params to use "Local" instead of "Remote", which I guess changes the protocol to XNET, according to this document:
http://www.firebirdfaq.org/faq260/
Last paragraph:QuoteOn Windows, you can also connect to server on local machine using local transport protocol. In Firebird 2.0, implementation has switched from IPServer to XNET. In this case, the connection string is supplied without the hostname prefix, in the same way as Firebird embedded is used.
C:/db/mydb.fdb
I have not tested this setting to see if the INET error goes away on JLS1, because, before I test on JLS1, I noticed that this setting allows any user to bypass Firebird security. A user doesn't have to enter a password, or even their own login ID. All they have to do is enter a valid Login ID, and they are allowed to log in. Do I have to manually write my own security module if the database is in "Local" connection setting? Is there a way to stop Windows from allowing Firebird users to "tag along" on the Windows security system to allow entry?
Thanks for the excellent info Tony. Hey, I was going through the document, and it is still a little unclear as to what the default protocol will be if I connect locally without specifying a "net" of some kind (ie: XNET, WNET, INET). Here is what I have:
RUBI reads it's inifile, which contains the line:
DatabaseLCL=RUBI
The string "RUBI" is supplied to the TIBDatabase component as the "DatabaseName" property.
In databases.conf, there is the following line:
RUBI = D:\app_vlt\db\fdb\RUBI_TXT.FDB
Using this method, I have done some preliminary testing and I have not been able to get an INET error message (and crash) at the RUBI application, and there are no INET messages in firebird.log.
So, is this method using INET or not?
~~~~~~~~~~~~~~~~~~~~~~~~
Just a side note... to force Firebird to use authentication, I at first connect to the database using an INET string specifically. This allows me to keep out unauthorized users and count bad logins. Once the user has successfully logged in using INET, I then disconnect, and use the "Local" method described above, to avoid crashes while using RUBI. Is there any "bad thing" that will happen using this method? I'll be doing some testing in the next few days to ensure that there is not some "show stopper" condition (like, only 1 user allowed at a time) or some craziness like that, that will prevent me from using this more reliable method.
RUBI runs reliably on server JLD1, with all default Firebird .conf settings, so, what I'm about to tell you has take that into account.
RUBI needs to display about 20 grids at the same time, all populated with different data from different tables, each with an attached "form" (DBEdits) that allow data to be edited and saved. The only way I found to do this in IBX is to have 20 different TIBQuery components "wired" to their own TIBTransaction component. So that means there are at least 20 open transactions at any given time. The user bounces between the grids, which are always refreshed by (committing changes, then) closing the related open transaction, starting it again, then run the associated query. Just due to the nature of the work, the transactions are all open, but they are updated (by user manually clicking) every 10 seconds to 10 minutes.
I have read that leaving "long running" transactions open, is considered "bad form". But I found that if I close the transaction, the grid is depopulated. I need the grids to have data at all times.
I have read that an entire app is supposed to have only one TIBTransaction. How? I need the user to be able to edit many different datasets (grid) at random, and each has to be able to save to it's own table.
Is there a way to:
1) Have data displayed to the user without leaving a transaction open? If I have to populate TBufferDataSets for every grid then close the transaction... I'll be programming for another 2 years (added on to the 2 years already spent on this)
2) Save data to different tables using the same transaction?
Does having 20 open transactions use "database locks"? Do I need to increase my lock count in database.conf for the RUBI database?
Please keep in mind, sentence one, of this post.
To reduce locks, I have set all the grids that don't need to be edited to "read" (read only). The forms use a TIBDataSet which is editable.
Yes, the transactions associated with grids fed by TIBQuery components that don't need editing have the "read" parameter added.
JLS1 Sat Oct 24 14:29:33 2020
INET/inet_error: read errno = 10053, aux server host = JLS1, address = fe80::3862:88ff:3231:1c98%6/51463
JLS1 Sat Oct 24 14:29:33 2020
INET/inet_error: read errno = 10054, client host = jls1, address = fe80::3862:88ff:3231:1c98%6/51461, user = JOESMITH
JLS1 Sat Oct 24 14:29:33 2020
INET/inet_error: send errno = 10054, server host = JLS1, address = fe80::3862:88ff:3231:1c98%6/3050
Is it always preceded by the 10053 error?
(Was that mentioned before?)
Does JLD1 also have these in the logs?
It doesn't indicate what protocol it (ISQL) used to connect, and I cannot find an ISQL command that would display this to me.