linux下freeTDS的安装

来源:互联网 发布:jre 7u9 windows 32 编辑:程序博客网 时间:2024/06/05 03:00

最近要在linux下用c++连接windows下的SQL Server 2005,所以只好用freeTDS了

       环境:  系统ubuntu9.04     kernel 2.6.28   gcc 4.3.3    freeTDS 0.91

       freeTDS的最新稳定版是0.91,这个可以在官网上下载http://www.freetds.org/ ,也可以在http://download.csdn.net/detail/DLUTXIE/3663528下载

       参考文档:在网上查了些资料,但主要还是参考官网上的用户手册http://www.freetds.org/userguide/

下载下来后接下来就要进行解压:

xgy@ubuntu:~/tmp$ tar xvf freetds-0.91.tar.gz

xgy@ubuntu:~/tmp$ mv freetds-0.91/ freetds

xgy@ubuntu:~/tmp$ cd freetds/
xgy@ubuntu:~/tmp/freetds$ ./configure --prefix=/usr/local/freetds  --enable-msdblib  --with-tdsver=7.1

--prefix=/usr/local/freetds :freetds将被安装在/usr/local/freetds目录下

--enable-msdblib :为是允许Microsoft数据库函数库

--with-tdsver=7.1 这个是指定TDS的协议版本,如果不指定只安装的是TDS5.0版的,网上有好多资料这里写的是8.0其实TDS最高的是7.2版的,之后就没再更新了,所以如果写的是8.0,那么安装的也是5.0版的,另外TDS有7.2版的,但在这里最高却只能写到7.1,如果写的是7.2,那么安装的也还是5.0版的,这个可以用./configure --help,输出后可以看到这样的一行:--with-tdsver=VERSION   TDS protocol version (4.2/4.6/5.0/7.0/7.1)[5.0]

更详细的的配置情况请参考:http://www.freetds.org/userguide/config.htm

另外说明下:在安装freeTDS之前我没有安装ODBC驱动管理器,也没有安装ODBC驱动。

 

接下来就是编译、安装:

xgy@ubuntu:~/tmp/freetds$ make

root@ubuntu:/home/xgy/tmp/freetds#   make install     //注意这里是以root用户执行的。

接下来对一些环境变量进行配置

在自己的主目录下编辑.bashrc文件,最该文件的最后一行加上如下内容:

export PATH=$PATH:/usr/local/freetds/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib    

然后执行:source  .bashrc   //这个是使刚才的设置生效

对于LD_LIBRARY_PATH环境变量的配置也可以换成配置文件:/etc/ld.so.conf,这个文件的最后一行加上:/usr/local/freetds0.91/lib

如果改的是/etc/ld.so.conf文件,那么就在root用户下执行:ldconfig,使刚才的配置立即生效。

对于这两个变量的配置如果还有啥疑问,那最好是好好看下这篇文章:http://blog.csdn.net/dlutxie/article/details/6776936这个会让你对linux下的一些路径问题有比较深的理解

网上有资料说还需要配置FREETDS变量,我做过测试,可以不用配置这个变量的。

现在可以看下你安装的情况,执行:tsql  -C 输出如下图:

 

从上图可以看到freeTDS的版本为0.91,freetds.conf配置文件在/usr/local/freetds/etc目录下,TDS的版本为7.1!! 

注意:

当编程使用freetds的时候,在Makefile文件中,需要指明动态库以及头文件的路径,如下所示(举例):

FREETDS_INCLUDE_DIR=/usr/local/freetds/include
FREETDS_LIB_DIR=/usr/local/freetds/lib

gcc -o ... -L$(FREETDS_LIB_DIR) -lsybdb

gcc -c ... -I$(FREETDS_INCLUDE_DIR)


当我开始configure时--with-tdsver选的8.0、7.2这里输出的TDSversion的值是5.0,用这个配置与windows下的SQLServer2005连接时执行命令:

xgy@ubuntu:~$ tsql -H 192.168.13.153 -p1433 -U sa -P 123456    //出现如下图错误:

 如果出现”Unexpected EOF from the server”则很有可能就是TDS的版本配置有问题,关于这个的错误及TDS的版本配置可以参考如下文档:

http://www.freetds.org/userguide/choosingtdsprotocol.htm#TAB.PROTOCOL.BY.PRODUCT

http://www.freetds.org/userguide/confirminstall.htm#E.G.BADNAME

接下来对freetds.conf文件进行配置,这个可以参考:http://www.freetds.org/userguide/freetdsconf.htm#TAB.FREETDS.CONF

在这个文件的最后加上如下内容:

[seamus-PC]

         host = 192.168.13.153  //SQLServer机器名字或者IP地址

         port = 1433

         tds version = 7.1       

说明:[seamus-PC] 这个括号里的内容可以随便写。

接下来就是测试连接了,执行的命令为:xgy@ubuntu:~$ tsql -H192.168.13.153 -p 1433 -U sa -P 123456

首先执行ping命令,确保两个系统能过通信,如果linux是装在虚拟机中的,那网卡需要要配成NAT模式(两个系统在同一台主机上)、或者桥接模式(linux、windows位于两台主机上)

如果SQL Server2005服务没有启动,则有可能出现如下错误:

另外还要记得启用服务器的TCP/IP协议:开始->开始->Microsoft SQL Server2005->配置工具->SQL Server配置管理器 出现如下图:

启用TCP/IP协议后重启服务即可。

下面这张图片是我没有启用TCP/IP协议同时TDS的版本为5.0时执行

xgy@ubuntu:~$tsql -H 192.168.13.153 -p 1433 -U sa -P 123456     出现的错误:

如果连接成功则会出现一个提示符:>,然后可以输入SQL语句,下面这个是我执行的情况:

student是我数据库pcTest(默认数据库)中的一张表

到此,FreeTDS在linux下安装、并与windows下的SQL Server2005连接成功!!

接下来就是写程序连接数据库, 这个可以参考http://www.freetds.org/userguide/samplecode.htm这里面说得很详细了,是一个很不错的例子。也可以到下面这个链接处下载,例子是一样的,只是我增加了注释:http://download.csdn.net/detail/DLUTXIE/3668501, 另外还可以参考http://msdn.microsoft.com/en-us/library/aa936982(v=SQL.80).aspx

原创粉丝点击