本人Linux版本: RHEL5.8 (32位)
源码安装包(设计开发使用Freetds建议选择源码编译、安装生成与自己系统适配的相关库文件): Freetds源码安装包地址
编码使用相关参考: Linux c使用Freetds连接SQLServer
主要说下个人使用的时候遇到的几个问题
1、连接失败
<span style="font-family:Times New Roman;font-size:14px;">错误提示:
locale is "en_US.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</span>
如果确定SQLServer数据库是开着的,网络是畅通的,而出现这个的原因建议修改Freetds版本。
键入:tsql -C
如上, 配置文件路径为在 /usr/local/etc/freetds.conf ,尽管你的 /etc/下面可能也有这个配置文件,但却不是默认读取的配置,改了也不生效。
修改全部配置[global]节点下:
tds version= 7.0 或者 7.1 8.0 ,总之为了提高下使用的版本
再次尝试连接:tsql -H 数据库主机IP -U 用户名 -P 密码 -p 端口
2、编码问题
本人是用Linux C 编程,写入数据库时发现中文乱码,个人代码用UTF-8或者GBK都编译试了下,没有效果。
一般是由于SQLServer 默认使用GBK之类的中文编码,修改配置文件,在全局配置中设置编码
client charset= GBK
问题解决。用php编码的同学有反应说需要编码时候用iconv函数进行转码,Linux C的话自己试了下不需要这个步骤。
欢迎交流。