我决定使用FreeTDS驱动程序和unixODBC来管理我的基于LAMP的应用程序与远程MsSQL数据库之间的PDO连接。不幸的是,该驱动程序似乎无法读取freetds.conf文件,也无法读取通过服务器CLI直接设置或通过putenv()函数在php文件中指定的环境变量。
现在是一些数据:
- 当我ping服务器时 - 没有数据包丢失。
- 当我telnet服务器的1433端口时 - 连接已建立
当我使用命令
TDSVER=7.0 tsql -H >IP< -p 1433 -U username
我被提示输入密码,连接已建立。
如果没有TDSVER在命令前 - 连接将失败并出现这样的消息:
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 有这个条目:
ISQL 也未能成功执行:
我的odbc.ini文件:
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
[MSSQL]
host = >IP<
port = 1433
tds version = 7.0
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
[MSSQL]
Description = MS SQL Server
Driver = FreeTDS
TDS_Version = 7.0
Server = >IP<
UID = username
PWD = password
ReadOnly = No
Port = 1433
我猜解决方案真的很简单,但是我太蠢了找不到它...