Hoe Firebird 3 verbinding laat maken zoals 2.5 met embedded connection string
Zoals je weet, als je alleen het pad naar de database in de verbindingsreeks opgeeft (zonder localhost of servernaam of xnet), maakt Firebird 3 verbinding met de database als een embedded server:
C:\HQbird\Firebird30>isql -user SYSDBA d:\30test.fdb
Database: d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;
MON$REMOTE_PROTOCOL <null>
MON$REMOTE_PROCESS <null>
MON$USER SYSDBA
Zoals je kunt zien, voert Firebird geen authenticatie uit in het geval van een embedded verbinding - het wachtwoord ontbreekt en MON$REMOTE_PROTOCOL is null.
Als je verbinding wilt maken met de lokale database als XNET-gebruiker, met authenticatie, is de standaardmanier om XNET als protocol op te geven.
C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey xnet://d:\30test.fdb
Database: xnet://d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;
MON$REMOTE_PROTOCOL XNET
MON$REMOTE_PROCESS C:\HQbird\Firebird30.sql.EXE
MON$USER SYSDBA
Het is echter mogelijk om embedded verbindingen te “verbieden”, als je de volgorde van providers in firebird.conf wijzigt naar het volgende:
Providers = Loopback, Engine12, Remote
In dit geval is het niet mogelijk om verbinding te maken als embedded zonder wachtwoord, omdat Firebird XNET zal gebruiken.
C:\HQbird\Firebird30>isql -user SYSDBA d:\30test.fdb
Statement failed, SQLSTATE = 28000
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
Use CONNECT or CREATE DATABASE to specify a database
SQL>
In het geval van de verbinding met gebruikersnaam en wachtwoord, wordt de verbinding tot stand gebracht als XNET, net als in Firebird 2.5.
C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey d:\30test.fdb
Database: d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;
MON$REMOTE_PROTOCOL XNET
MON$REMOTE_PROCESS C:\HQbird\Firebird30.sql.EXE
MON$USER SYSDBA