Эта страница переведена машинным переводом. Читайте английский оригинал. English

Библиотека IBSurgeon

Как включить или отключить протоколы подключения для Firebird в Windows

Firebird на Windows имеет следующие ключи для явного включения протоколов подключения:

  1. -i включает протокол INET, он используется, когда строка подключения выглядит как localhost:Disk\Path\database.fdb или server_name:Disk:\Path\database.fd b, для 3.0 также может быть inet://servername:disk:\path\bd.fdb
  2. -x включает протокол XNET. На 2.5 и более ранних версиях строка подключения - это простой локальный путь Disk:\Path\database.fdb, на 3.0+ - это xnet://Disk:\Path\database.fdb
  3. -w включает протокол WNET (NetBEUI), для строк подключения вида \ \servername\disk:\path\database.fdb. Не используйте такие строки подключения (это тема отдельной статьи, почему это плохо)!

По умолчанию все протоколы включены.

Однако, если какой-то ключ указан явно, неуказанные протоколы отключаются!

Давайте рассмотрим следующий пример

Поведение по умолчанию - все 3 протокола включены:

Code
C:\HQbird\Firebird30>firebird  -a

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  localhost:o:\OLTP30.V20190415.FDB
Database: localhost:o:\OLTP30.V20190415.FDB, User: SYSDBA
SQL> exit;

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  xnet://o:\OLTP30.V20190415.FDB
Database: xnet://o:\OLTP30.V20190415.FDB, User: SYSDBA
SQL> exit;

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  \\Win-0u7pnfkg57p\o:\OLTP30.V20190415.FDB
Database: \\Win-0u7pnfkg57p\o:\OLTP30.V20190415.FDB, User: SYSDBA
SQL>exit;

Разрешен только XNET (локальное подключение):

Code
C:\HQbird\Firebird30>firebird  -a  -x

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  localhost:o:\OLTP30.V20190415.FDB
Statement failed, SQLSTATE = 08006
Unable to complete network request to host "localhost".
-Failed to establish a connection.
Use CONNECT or CREATE DATABASE to specify a database
SQL> exit;

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  xnet://o:\OLTP30.V20190415.FDB
Database: xnet://o:\OLTP30.V20190415.FDB, User: SYSDBA
SQL> exit;

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  \\Win-0u7pnfkg57p\o:\OLTP30.V20190415.FDB
Statement failed, SQLSTATE = 08006
Unable to complete network request to host ".".
-Failed to establish a connection.
-The system cannot find the file specified.
Use CONNECT or CREATE DATABASE to specify a database
SQL> exit;

Разрешен только INET (TCP-подключение):

Code
C:\HQbird\Firebird30>firebird  -a  -i

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  localhost:o:\OLTP30.V20190415.FDB
Database: localhost:o:\OLTP30.V20190415.FDB, User: SYSDBA
SQL> exit;

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  xnet://o:\OLTP30.V20190415.FDB
Statement failed, SQLSTATE = 08006
Unable to complete network request to host "xnet://Global\FIREBIRDHQBIRD".
Use CONNECT or CREATE DATABASE to specify a database
SQL> exit;

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  \\Win-0u7pnfkg57p\o:\OLTP30.V20190415.FDB
Statement failed, SQLSTATE = 08006
Unable to complete network request to host ".".
-Failed to establish a connection.
-The system cannot find the file specified.
Use CONNECT or CREATE DATABASE to specify a database
SQL> exit;

Подключения INET и XNET, но WNET не разрешен:

Code
C:\HQbird\Firebird30>firebird  -a  -i -x

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  localhost:o:\OLTP30.V20190415.FDB
Database: localhost:o:\OLTP30.V20190415.FDB, User: SYSDBA
SQL> exit;

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  xnet://o:\OLTP30.V20190415.FDB
Database: xnet://o:\OLTP30.V20190415.FDB, User: SYSDBA
SQL> exit;

C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey  \\Win-0u7pnfkg57p\o:\OLTP30.V20190415.FDB
Statement failed, SQLSTATE = 08006
Unable to complete network request to host ".".
-Failed to establish a connection.
-The system cannot find the file specified.
Use CONNECT or CREATE DATABASE to specify a database
SQL> exit;

Эти ключи можно использовать для управления Firebird в режиме приложения и в режиме службы.

Например, если вам нужно ограничить подключения к серверу Firebird через сеть, вы можете использовать ключ -x.

Еще одно хорошее применение ключей: если вы видите ошибки WNET в firebird.log, это означает, что кто-то использует строку подключения WNET. Укажите -i -x, и вы легко вычислите пользователей со строкой подключения WNET по их громким крикам :)

Понравилось? Хотите больше советов, трюков и шуток о Firebird? Подпишитесь на Telegram-канал FirebirdSQL!