freetds 解决连接SQL SERVER报错Unexpected EOF from the server
一、报错
使用命令连接数据库时报错
tsql -H 10.100.173.144 -p 1433 -U sa -P 201211
报错内容为
tsql -H 10.100.173.144 -p 1433 -U sa -P 201211
locale is "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=zh_CN.UTF-8;LC_TIME=zh_CN.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=zh_CN.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=zh_CN.UTF-8;LC_NAME=zh_CN.UTF-8;LC_ADDRESS=zh_CN.UTF-8;LC_TELEPHONE=zh_CN.UTF-8;LC_MEASUREMENT=zh_CN.UTF-8;LC_IDENTIFICATION=zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
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
二、原因
其实根本原因就是TSP协议版本不对,跟现有协议对不上,我们在配置freetds时有如下参数
这个就是tds版本,或者需要设置到7.0以上,一般8.0就可以。
当我使用tsql -H 10.100.173.144 -p 1433 -U sa -P 201211连接时,会报错。这是因为,没有指明TDS驱动,默认使用了global的配置,也就是tds4.0版本。
三、解决
1.在命令中指明TDS协议版本
TDSVER=8.0 tsql -H 10.100.173.144 -p 1433 -U sa -P 201211
2.直接连接配置文件里已经有的数据库
如图,我已经配置了SizerResults数据库
所以我可以直接使用命令
tsql -S SizerResults -U sa -P 201211
这将让我们直接使用该数据库的配置