Linux下连接MS Sql server -- 使用ODBC/FreeTDS组合(详细)

最近工作上需要,了解了下相关内容,网上资料较散,逻辑也不够清晰,这里总结了一下,算是比较全面的(部分内容来自网络)。

在Linux下连接MSSql server,可以使用ODBC/FreeTDS组合。

TDS is Tabular DataStream protocol, used for connecting to MS SQL and Sybase servers over TCP/IP.

FreeTDS is an implementation of TDS.It provide the odbc driver for TDS named tdsodbc.

安装unixODBC和freeTDS

unixODBC是Linux下的ODBC驱动管理器,使用yum install unixODBC*安装unixODBC。

freeTDS提供Linux下连接Sybase或MSSql Server的ODBC驱动tdsodbc,使用yum install freetds* 安装freetds。(Ubuntu下使用aptitude install tdsodbc 直接安装freetds提供的tdsodbc驱动)

tsql是对应于freetds的连接数据库的命令行工具,用来调试是否连接数据库成功(Ubuntu下使用$aptitude install freetds-bin安装)

配置freeTDS

Freetds配置文件在/etc/freetds/freetds.conf 或 /etc/freetds.conf

编辑配置文件,增加一个数据库连接段落:

[MY_MS_SQL]

host = 192.168.2.104

port = 1433

tds version = 7.0

上面MY_MS_SQL是SqlserverName,可以是自己取的有意义名字。host为sqlserver所在主机IP地址或域名。

配置完后,可以使用tsql测试,tsql -S MY_MS_SQL -U username -P password,看到1>提示符就是成功。

如果连接不成功,可以先在数据库服务器上的SQL Server配置管理器上的网络配置看TCP/IP协议是否启用,然后看在服务器上telnet1433端口,看是否端口开放。

需要注意服务器的防火墙配置,可在客户机telnet 1433端口看连接成功否。

以上是直接使用freeTDS自带的tsql工具连接MS SQL数据库测试tdsodbc驱动是否安装正确的方法。

下面我们来配置unixODBC来管理tdsodbc驱动,并调用tdsodbc来连接MS SQL数据库

a)向unixODBC注册tdsodbc驱动

在任意处创建一个文件tds.driver.template eg:/var/tds.driver.template,内容如下:

[FreeTDS]

Description = v0.63 with protocol v8.0

Driver = /usr/local/freetds/lib/libtdsodbc.so

使用命令odbcinst -i -d -f /var/tds.driver.template 注册驱动

以上Driver地址根据实际位置修改

此处亦可以直接vi编辑/etc/odbcinst.ini添加

b)配置ODBC数据源,即配置DSN

配置有三种方法:DSN-less,ODBC-only,ODBC-combined

可参见Preparing ODBC。http://www.freetds.org/userguide/prepodbc.htm

同上,创建一个文件tds.datasource.template内容如下:

[MY_MS_SQL_DSN]

Driver = FreeTDS

Description = ODBC connection via FreeTDS

Trace = No

Servername = MY_MS_SQL

Database = ACUMEN

使用命令odbcinst -i -s -f /var/tds.datasource.template 添加数据源到/etc/odbc.ini

Servername为Freedts配置文件中的SqlserverName;Driver为odbcinst.ini中注册的驱动名称;Database 为使用的数据库。

最后用isql测试:isql MY_MS_SQL username password,如果出现SQL>提示符就说明配置成功

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。