此页面为机器翻译。请阅读英文原文。 English

IBSurgeon 文库

如何在Windows上启用或禁用Firebird的连接协议

Firebird 在 Windows 上具有以下开关,用于显式启用连接协议:

  1. -i 启用 INET 协议,当连接字符串看起来像 localhost:Disk\Path\database.fdbserver_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 开关。

这些开关的另一个好用途:如果您在 firebird.log 中看到 WNET 错误,这意味着有人在使用 WNET 连接字符串。指定 -i -x,您就能通过他们响亮的尖叫声轻松识别使用 WNET 连接字符串的用户 :)

喜欢这篇文章吗?想要更多 Firebird 技巧、窍门和笑话?订阅 FirebirdSQL 电报频道吧!