Як увімкнути або вимкнути протоколи з'єднання для 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? Підписуйтесь на телеграм-канал FirebirdSQL!