Как включить или отключить протоколы подключения для Firebird в Windows
Firebird на Windows имеет следующие ключи для явного включения протоколов подключения:
- -i включает протокол INET, он используется, когда строка подключения выглядит как localhost:Disk\Path\database.fdb или server_name:Disk:\Path\database.fd b, для 3.0 также может быть inet://servername:disk:\path\bd.fdb
- -x включает протокол XNET. На 2.5 и более ранних версиях строка подключения - это простой локальный путь Disk:\Path\database.fdb, на 3.0+ - это xnet://Disk:\Path\database.fdb
- -w включает протокол WNET (NetBEUI), для строк подключения вида \ \servername\disk:\path\database.fdb. Не используйте такие строки подключения (это тема отдельной статьи, почему это плохо)!
По умолчанию все протоколы включены.
Однако, если какой-то ключ указан явно, неуказанные протоколы отключаются!
Давайте рассмотрим следующий пример
Поведение по умолчанию - все 3 протокола включены:
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 (локальное подключение):
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-подключение):
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 не разрешен:
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!