如何在Windows上启用或禁用Firebird的连接协议
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 开关。
这些开关的另一个好用途:如果您在 firebird.log 中看到 WNET 错误,这意味着有人在使用 WNET 连接字符串。指定 -i -x,您就能通过他们响亮的尖叫声轻松识别使用 WNET 连接字符串的用户 :)
喜欢这篇文章吗?想要更多 Firebird 技巧、窍门和笑话?订阅 FirebirdSQL 电报频道吧!