Цю сторінку перекладено машинним перекладом. Читайте англійський оригінал. English

Бібліотека IBSurgeon

Як змусити Firebird 3 підключатися, як 2.5, з вбудованим рядком підключення

Як відомо, якщо вказати лише шлях до бази даних у рядку підключення (без localhost, імені сервера або xnet), Firebird 3 підключається до бази даних як вбудований сервер:

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

Як бачите, Firebird не виконує автентифікацію у випадку вбудованого підключення - пароль відсутній, а MON$REMOTE_PROTOCOL дорівнює null

Якщо ви хочете підключитися до локальної бази даних як користувач XNET, з автентифікацією, стандартний спосіб - вказати XNET як протокол.

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        

Однак можливо «заборонити» вбудовані підключення, якщо змінити порядок провайдерів у firebird.conf на наступний:

Code
Providers = Loopback, Engine12,  Remote

У цьому випадку підключитися як вбудований сервер без пароля буде неможливо, оскільки Firebird використовуватиме 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>

У випадку підключення з ім’ям користувача та паролем, з’єднання буде встановлено як XNET, як у 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