How to make Firebird 3 connect like 2.5 with embedded connection string
IBSurgeon Team - ?
	
	
		
			
	
			
			IBSurgeon Team - ?
[SHOWTOGROUPS=4,20]
As you know, if you specify just the path to the database in the connection string (without localhost or server name or xnet), Firebird 3 connects to the database as an embedded server:
	
	
	
		
	
	
	
		
	
	
	
		
However, it is possible to "prohibit" embedded connections, if you change the order of providers in firebird.conf to the following:
	
	
	
		
In this case, it will be not possible to connect as embedded without a password, because Firebird will use XNET
	
	
	
		
In case of the connection with username and password, the connection will be established as XNET, like in Firebird 2.5
	
	
	
		
	
	
	
		
[/SHOWTOGROUPS]
		As you know, if you specify just the path to the database in the connection string (without localhost or server name or xnet), Firebird 3 connects to the database as an 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
[code]
As you can see, Firebird does not perform authentication in case of an embedded connection - the password is absent, and MON$REMOTE_PROTOCOL is null
If you want to connect to the local database as XNET user, with authentication, the standard way is to specify XNET as a protocol.
[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\isql.EXE
MON$USER                        SYSDBAHowever, it is possible to "prohibit" embedded connections, if you change the order of providers in firebird.conf to the following:
		Код:
	
	Providers = Loopback, Engine12,  RemoteIn this case, it will be not possible to connect as embedded without a password, because Firebird will use XNET
		Код:
	
	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 case of the connection with username and password, the connection will be established as XNET, like 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\isql.EXE
MON$USER                        SYSDBA 
				 
 
		