Esta página fue traducida automáticamente. Lee el original en inglés. English

Biblioteca de IBSurgeon

Cómo hacer que Firebird 3 se conecte como 2.5 con cadena de conexión embebida

Como sabes, si especificas solo la ruta a la base de datos en la cadena de conexión (sin localhost, nombre de servidor o xnet), Firebird 3 se conecta a la base de datos como servidor embebido:

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

Como puedes ver, Firebird no realiza autenticación en caso de una conexión embebida - la contraseña está ausente, y MON$REMOTE_PROTOCOL es null

Si quieres conectarte a la base de datos local como usuario XNET, con autenticación, la forma estándar es especificar XNET como protocolo.

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        

Sin embargo, es posible “prohibir” las conexiones embebidas, si cambias el orden de los proveedores en firebird.conf a lo siguiente:

Code
Providers = Loopback, Engine12,  Remote

En este caso, no será posible conectarse como embebido sin contraseña, porque Firebird usará 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>

En caso de la conexión con nombre de usuario y contraseña, la conexión se establecerá como XNET, como en 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