我决定使用 FreeTDS 驱动程序和 unixODBC 来管理基于 LAMP 的应用程序与远程 MsSQL 数据库之间的 PDO 连接。不幸的是,驱动程序似乎没有读取 freetds.conf 文件,也没有直接通过服务器的 CLI 设置环境变量,也没有通过 putenv() 函数在 php 文件中指定环境变量。
现在一些数据:
- 当我 ping 服务器时 - 没有数据包丢失。
- 当我在 1433 端口上远程登录服务器时 - 连接已建立
当我使用命令时
TDSVER=7.0 tsql -H >IP< -p 1433 -U username
系统提示我输入密码并建立连接。
如果命令前面没有 TDSVER - 连接失败并显示以下消息:
Error 20017 (severity 9): Unexpected EOF from the server OS error 115, "Operation now in progress" Error 20002 (severity 9): Adaptive Server connection failed There was a problem connecting to the server
tsql -C 命令回显这样的输出:
Compile-time settings (established with the "configure" script) Version: freetds v0.91 freetds.conf directory: /usr/local/etc MS db-lib source compatibility: yes Sybase binary compatibility: no Thread safety: yes iconv library: yes TDS version: 5.0 iODBC: no unixodbc: yes SSPI "trusted" logins: no Kerberos: no
上面给出的位置的 freetds.conf 有这个条目:
[MSSQL] host = >IP< port = 1433 tds version = 7.0
ISQL 也失败了:
isql -v MSSQL [S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source [01000][unixODBC][FreeTDS][SQL Server]Adaptive Server connection failed [ISQL]ERROR: Could not SQLConnect
我的 odbc.ini :
[MSSQL] Description = MS SQL Server Driver = FreeTDS TDS_Version = 7.0 Server = >IP< UID = username PWD = password ReadOnly = No Port = 1433
我想解决方案真的很简单,但我太愚蠢了,找不到它......