1

为什么 mssql_connect() 无法通过隧道连接到 mssql 数据库。

我为远程服务器创建了隧道,例如:

$ssh -L 1433:db_server:1433 user@mid_server

这会将本地端口 1433 转发到 db_server。我测试过。

但是,当我尝试使用 php 连接到数据库时,它不起作用

mssql_connect("localhost:1433", 'db_user', 'db_password')

细节(已编辑):

  1. db_server :安装 sql server 的远程数据库服务器。数据库服务器有防火墙。只有 mid_server 可以连接
  2. mid_server :允许连接 db_server 的中间位置
4

2 回答 2

1

我通过在 freetds.conf 上进行一些更改来修复它

[global]
    # TDS protocol version
;   tds version = 4.2

[global]
    # TDS protocol version
tds version = 7.0

并重新启动apache。

于 2013-05-07T05:33:30.420 回答
0

我假设您正在从 linux(或 MacOS)机器连接到 MSSQL 服务器,可能使用的是 freetds 连接器。需要检查两件事:服务器是否正确侦听端口以及 Linux 机器上是否正确安装了 FreeTDS。由于您可以连接另一个客户端,因此问题应该出在 FreeTDS 上。

确保已安装并正确配置 FreeTDS。尝试直接连接到服务器(它应该提示输入密码):

# tsql -S localhost -U db_user

如有必要,调整 freetds.conf 上的端口/区域设置/版本信息。了解更多信息:

于 2013-05-01T14:04:50.507 回答