Cette page a été traduite automatiquement. Lisez l'original en anglais. English

Bibliothèque IBSurgeon

Comment faire pour que Firebird 3 se connecte comme 2.5 avec une chaîne de connexion intégrée

Comme vous le savez, si vous spécifiez simplement le chemin d’accès à la base de données dans la chaîne de connexion (sans localhost, nom de serveur ou xnet), Firebird 3 se connecte à la base de données en tant que serveur embarqué :

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

Comme vous pouvez le voir, Firebird n’effectue pas d’authentification dans le cas d’une connexion embarquée - le mot de passe est absent, et MON$REMOTE_PROTOCOL est nul.

Si vous souhaitez vous connecter à la base de données locale en tant qu’utilisateur XNET, avec authentification, la méthode standard consiste à spécifier XNET comme protocole.

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        

Cependant, il est possible de « interdire » les connexions embarquées, si vous modifiez l’ordre des fournisseurs dans firebird.conf comme suit :

Code
Providers = Loopback, Engine12,  Remote

Dans ce cas, il ne sera pas possible de se connecter en mode embarqué sans mot de passe, car Firebird utilisera 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>

Dans le cas d’une connexion avec nom d’utilisateur et mot de passe, la connexion sera établie en tant que XNET, comme dans 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