Esta página foi traduzida por máquina. Leia o original em inglês. English

Biblioteca IBSurgeon

Como fazer o Firebird 3 conectar como o 2.5 com string de conexão incorporada

Como você sabe, se você especificar apenas o caminho para o banco de dados na string de conexão (sem localhost, nome do servidor ou xnet), o Firebird 3 conecta-se ao banco de dados como um servidor embutido:

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 você pode ver, o Firebird não realiza autenticação no caso de uma conexão embutida - a senha está ausente, e MON$REMOTE_PROTOCOL é nulo

Se você quiser conectar-se ao banco de dados local como usuário XNET, com autenticação, a maneira padrão é 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        

No entanto, é possível “proibir” conexões embutidas, se você alterar a ordem dos provedores no firebird.conf para o seguinte:

Code
Providers = Loopback, Engine12,  Remote

Neste caso, não será possível conectar-se como embutido sem senha, porque o 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>

No caso da conexão com nome de usuário e senha, a conexão será estabelecida como XNET, como no 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