Questa pagina è stata tradotta automaticamente. Leggi l'originale in inglese. English

Libreria IBSurgeon

Come far connettere Firebird 3 come 2.5 con stringa di connessione embedded

Come sai, se specifichi solo il percorso del database nella stringa di connessione (senza localhost o nome del server o xnet), Firebird 3 si connette al database come server embedded:

Code
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

Come puoi vedere, Firebird non esegue l’autenticazione in caso di connessione embedded - la password è assente e MON$REMOTE_PROTOCOL è null

Se vuoi connetterti al database locale come utente XNET, con autenticazione, il modo standard è specificare XNET come protocollo.

Code
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        

Tuttavia, è possibile “proibire” le connessioni embedded, se cambi l’ordine dei provider in firebird.conf come segue:

Code
Providers = Loopback, Engine12,  Remote

In questo caso, non sarà possibile connettersi come embedded senza password, perché Firebird userà XNET

Code
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 caso di connessione con nome utente e password, la connessione verrà stabilita come XNET, come in Firebird 2.5

Code
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