linux下freetds+unixodbc 连接sql server

Linux 下链接Windows下的SQL server 需要的安装文件以及配置配置说明

一、freetds配置及测试

1.freetds配置

 复制freetds文件夹到/usr/local下,进入/usr/local/freetds/etc打开freetds.conf,进行配置

 

 在这里面我们已经配置好了,对应不同的数据库,只需要修改。

[test]                    MSSQL数据源名称,可以不修改

         host= 192.168.1.249     修改为需要连接的数据库

         port= 1433             修改为数据库端口

         tdsversion = 7.4         对应MSSQL2012,其他MSSQL版本未测试,不可修改

client charset =UTF-8     客户端软件可识别的字符集,可以不修改

注意, client charset 必需大于或等于服务端数据库使用的字符集.
例如,服务端数据库是 MS SQL Server 2000, 字符集是 GB2312.
那么 client charset 可以设置为 GB2312(等于), GB18030(大于),UTF-8(大于)
但不能设为ISO-8859-1(小于), Shift_JIS(不等于).
由于 UTF-8 是所由字符集的超集,因此设置为 UTF-8 总是可行的.
此外, FreeTDS的client charset不能设置为 UTF16. 这时目前该软件设计的局限,
其官方网站称,在未来版本中可能会增加对client charset UTF16的支持.

2.Freetds连接数据库测试

进入/usr/local/freetds/bin

./tsql  -H 192.168.1.249  -p 1433  -U  sa  -P  123.com -D  zy

输入 ./tsql  -H 192.168.1.70  -p 4430  -U sa  -P 123.com -D zy

  -H 后面是数据库地址–p 后面是数据库端口, -U后面是数据库用户名,-P 数据库密码,-D 后面是数据库名。

 

回车后显示下面的就成功了,显示如下

现在进行数据库操作,看看成功不

> select * from userin

> go

正确显示就成功了,否则就说明freetds测试失败

3.Freetds配置测试

./tsql -S test -U  sa  -P 123.com  -D  zy

 

验证是否成功的方法跟2一致

 

 

 

二、unixODBC配置及测试

1.unixodbc配置

复制unixODBC文件夹到/usr/local下,进入 /usr/local/unixODBC/etc打开 odbcinst.ini,进行配置

 

[FreeTDS]                 驱动名称,可以不修改

Description = FreeTDS unixODBC Driver          驱动描述,不用修改

Driver =/usr/local/freetds/lib/libtdsodbc.so.0        驱动使用动态库的路径,如果按照freetds配置中1的过程来,这里不需要修改

 

同级目录下打开odbc.ini

[testdsn]                    ODBC数据源名称,这里面的这个名字要和我们资源里面maindbconfig里面的databasename名字要一样,否则连接不上。

Driver = FreeTDS  这个是上面odbcinst.ini里面配置中的[FreeTDS]可以不用修改

Description = MSSQL Server  ODBC数据源描述,可以不用修改

Servername = test  这个就是freetds里面配置里面的[test]可以不用修改

Database = zy   这个就是要连接的sql server的数据库真实名字,比如192.168.1.249上面的zy数据库名字。

 

 

2.unixodbc测试

进入/usr/local/unixODBC/bin

输入 ./ isql  -v  testdsn sa  123.com

上面的testdns就是/usr/local/unixODBC/etc/odbc.ini里面配置的[testdsn],后面再加上MSSQL用户名和密码

 

如果成功,就显示如下:

Connected!

否则就失败了,请检查配置

 

三、我们的程序如何在linux上运行,连接Windows上的sql server

 

1.把我们的程序放在/home下,当然你也可以放别的目录下,或是自己建一个目录,只要这个目录有可以获取root权限,可以进行复制拷贝,如果不可以,请通过命令给这个文件夹赋权限。

2.在这个程序里面应该有QT的lib库,已经两个QT的文件夹一个是platform,一个是sqldriver,这个sqldriver里面需要用我们编译好的libqsqlodbc.so这个库,到时候我们会提供好。

3.启动程序的批处理如何写。举例:

假设我们把程序放在了/home/Release文件夹下。Freetds以及unixodbc放在了/usr/local下。

Qt的lib文件夹放在了/home/Release文件夹下。

export LD_LIBRARY_PATH=/home/Release:/home/Release/lib:/usr/local/unixODBC/lib:/usr/local/freetds/lib:LD_LIBRARY_PATH

./sqlserver ( 这是我们要运行的程序)

 

 

备注:如果程序运行过程出错错误提示:

QT [unixODBC][Driver Manager]Data sourcename not found,

请复制/usr/local/unixODBC/etc/odbc.ini 和/usr/local/unixODBC/etc/odbcinst.ini,两个文件,复制到/etc下。再次运行批处理,应该就可以了。

 


 

备注:如果程序运行过程出错错误提示:

QT [unixODBC][Driver Manager]Data sourcename not found,

请复制/usr/local/unixODBC/etc/odbc.ini 和/usr/local/unixODBC/etc/odbcinst.ini,两个文件,复制到/etc下。再次运行批处理,应该就可以了。


取出数据的过程里面有可能因为字符过长取不出来的问题,在freetds的配置中增加

 text size = 64512

你可能感兴趣的:(linux下freetds+unixodbc 连接sql server)