Tato stránka byla strojově přeložena. Přečtěte si anglický originál. English

Knihovna IBSurgeon

Jak připojit Firebird 3 podobně jako 2.5 s embedded připojovacím řetězcem

Jak víte, pokud v připojovacím řetězci zadáte pouze cestu k databázi (bez localhost, názvu serveru nebo xnet), Firebird 3 se k databázi připojí jako embedded server:

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

Jak vidíte, Firebird v případě embedded připojení neprovádí autentizaci - heslo chybí a MON$REMOTE_PROTOCOL je null.

Pokud se chcete připojit k lokální databázi jako uživatel XNET s autentizací, standardním způsobem je zadat XNET jako protokol.

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        

Je však možné „zakázat“ embedded připojení, pokud změníte pořadí providerů v firebird.conf na následující:

Code
Providers = Loopback, Engine12,  Remote

V tomto případě nebude možné připojit se jako embedded bez hesla, protože Firebird použije 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>

V případě připojení s uživatelským jménem a heslem bude připojení navázáno jako XNET, stejně jako ve Firebirdu 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