一, 安装 unixODBC

下载安装包. 在 RedHat 安装光盘上就有
unixODBC-2.2.11-1.RHEL4.1.i386.rpm
unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm
unixODBC-kde-2.2.11-1.RHEL4.1.i386.rpm

安装
rpm -Uvh unixODBC-2.2.11-1.RHEL4.1.i386.rpm
rpm -Uvh unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm
如果安装中提示有对其它安装包的依赖,则按照提示先安装
哪些包.

或者从源码安装 unixODBC
下载源码集
unixODBC-2.2.11.tar.gz
# tar xzf unixODBC-2.2.11.tar.gz
# cd unixODBC-2.2.11
# ./configure
# make
# make install

./configure 的时候也有可能提示找不到某些依赖库.
下载这些依赖库的源码,编译,安装.

rpm 安装和源码编译安装的差别在于配置文件 odbc.ini, odbcinst.ini
的位置不同. 前者为 /etc , 后者为 /usr/local/etc

二, 安装 FreeTDS

unixODBC 提供了Linux 对ODBC 的支持,但它只是一个 ODBC的管理器, 要连接
实际的数据库还得提供这种数据库的 ODBC 驱动.

FreeTDS就是Linux 下 用于连接MS SQL Server 和 Sybase 的免费ODBC 驱动
注意, 必须先装 unixODBC, 再装 freetds

freetds-0.64 是目前的最新稳定版.
下载源码包 freetds-stable.tgz
# tar xzf freetds-stable.tgz
# ./configure --with-unixodbc=/usr/local --with-tdsver=8.0
# make
# su
# make install
将安装到 /usr/local 下

如果 unixODBC是源码安装, 则
--with-unixodbc=/usr/local
如果 unixODBC是rpm安装, 则
不需要该选项

三, 配置 unixODBC 和 FreeTDS

3.1 向unixODBC 登记 FreeTDS 驱动
    修改 /etc/odbcinst.ini (或者/usr/local/etc/odbcinst.ini)
    在文件中添加
=========================== /etc/odbcinst.ini  ======================
# Driver from FreeTDS package
# setup from FreeTDS package
[FREETDS]
Description     = ODBC of FreeTDS for MS SQL 2000
Driver          = /usr/local/lib/libtdsodbc.so
Setup           = /usr/local/lib/libtds.so
FileUsage       = 1

===================================================================

3.2  在 FreeTDS 的配置文件中添加指向具体数据库的访问信息
     修改 /usr/local/etc/freetds.conf
     在末尾添加如下内容. 该配置文件中原有的内容请仔细阅读, 是不错的教材
===================================================================
[MYSQLSERVER]
host = 192.168.0.5    ; MS SQL Server 的 IP 或者域名
port = 1433
tds version = 8.0
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的支持.

3.3  修改 /etc/odbc.ini (如果odbc是从源码安装,则 /usr/local/etc/odbc.ini)
     添加DSN.  
=========================== /etc/odbc.ini  ======================
[ODBC Data Sources]
TEST1dsn= My first Test DSN
TEST2dsn= My second Test DSN

[TEST1dsn]        ; DSN 名
Driver          = /usr/local/lib/libtdsodbc.so
Description     = My First Test DSN
Trace           = No
Servername      = MYSQLSERVER     ;在 freetds.conf中定义
Database        = MYTESTDB              ;库名

[TEST2dsn]
Driver          = /usr/local/lib/libtdsodbc.so
Description     = My Second Test DSN
Trace           = No
Server          = 192.168.0.5     ; 可以直接写数据库服务器的访问信息
Database        = MyTESTDB
Port            = 1433
TDS_Version     = 8.0

[Default]
Driver          = /usr/local/freetds/lib/libtdsodbc.so
===================================================================

注意:
用 unixODBC 通过 freeTDS 访问 MS SQL Server 有两种配置方式.

(1)一种是将服务器信息写在 freeTDS 的配置文件 $PREFIX/etc/freetds.conf 中,
而 /etc/odbc.ini 中使用 Servername 来指向 freetds.conf 中设定的 DSN.
如上例中的 [TEST1dsn]
(2).另一种方式是将服务器信息也一并写在 /etc/odbc.ini 中. 如上例中的 [TEST2dsn].
注意,关键字有所不同.  例如, freetds.conf 中的 tds version 在
/etc/odbc.ini 中为 TDS_Version.

方式(2)相对简单,但只有少数几个关键字可以控制freetds,至于freetds的
其它特征则使用freetds的缺省配置.

方式(1)虽然复杂一些,但对freetds可进行更细致的控制,例如可指定客户端
的字符集.

推荐使用方式(1)进行配置.

四, 访问数据库:

无论是用客户端软件,还是编程访问数据库,通常要提供三个参数.
DSN, UserName, Password.
以本文示例来说,
DSN =  TEST1dsn 或 TEST2dsn
UserName = somename,
Password = somepasswd,

就意味着访问位于 192.168.0.5 的 MS SQL Server 库 MYTESTDB. 查询结果
的字符集为 UTF-8.

unixODBC 提供的一个通用的 GUI 数据库连接客户端为 DataManager.

五, 关于字符集:

FreeTDS能够自动识别服务器端的charset. 因此 FreeTDS 需要用户设定客户端的
charset. 这也就是客户端应用程序期待从FreeTDS获得的数据所应该使用的charset.
一旦client charset设定, FreeTDS将实现从 server charset <--> client charset
的转换.

如果有两个客户应用程序都要访问同一个 MS SQLServer, 但很不幸,这两个客户程序所
接受的字符集分别是 UTF-8 和 GB2312. 那么解决的办法是在FreeTDS.conf中设置
两组DataSource,它们的服务器设置相同,但client charset分别设为 UTF-8和GB2312. 在
odbc.ini中也设置两组不同的DSN 分别指向这两组DataSource. 而最终两个客户程序
各自使用与之相应的DSN即可.

转载于:https://www.cnblogs.com/mssql/archive/2011/05/24/tt164.html

在linux上配置unixODBC和FreeTDS访问MS SQL Server.相关推荐

  1. oracle透明网关访问antdb,oracle通过透明网关,创建dblink,访问ms sql server和其他数据库 -......

    oracle通过透明网关(Oracle Transparent Geteways),访问ms sql server和其他数据库 环境: 1.在安装有oracle服务器端,ms sql server的客 ...

  2. Linux上配置SVN使用http访问

    前提是已经搭建好svn服务器并且可以通过svn://ip/proname进行访问. 1查看Apache服务是否安装. 查看是否有httpd: cd /etc/rc.d/init.d/ 查看httpd版 ...

  3. Linux 上配置 SQL Server Always On Availability Group

    SQL Server Always On Availability Group 配置 步骤: 配置三台 Linux 集群节点 创建 Availability Group 配置 Cluster Reso ...

  4. linux机器连接sql,在linux下连接MS SQL Server

    在工作中需要在Linux服务器上访问MS SQL Server数据库,我马上就想到了适用ODBC接口进行实现,毕竟它的移植性更好. 首先需要选一种支持MS SQL Server的ODBC驱动,商业的不 ...

  5. linux外网sql server,在linux下连接MS SQL Server

    在工作中需要在Linux服务器上访问MS SQL Server数据库,我马上就想到了适用ODBC接口进行实现,毕竟它的移植性更好. 首先需要选一种支持MS SQL Server的ODBC驱动,商业的不 ...

  6. 在Linux系统上配置Samba客户端,访问Samba远程目录

    1. 前言 本文主要讲解如何在Linux系统上配置Samba客户端,访问Samba远程目录. 2. 安装smbclient Linux用户可以从命令行访问samba共享,使用文件管理器或挂载samba ...

  7. 在LINUX上配置oracle ASMLib的多路径磁盘

    在LINUX上配置oracle ASMLib的多路径磁盘 适用于: Oracle Server - Enterprise Edition - Version: 10.2.0.1 Linux Kerne ...

  8. linux没有jre文件夹,linux上配置jdk时,java命令提示没有此文件或文件夹的解决方法...

    linux上配置jdk时,java命令提示没有此文件或文件夹的解决方法 出现这个问题可能有以下几种原因: 1.对该文件没有执行的权限. 2.我们的机器是64位的,而下载的jdk是32位的. 我就是后一 ...

  9. linux配置conf_如何使用mssql-conf和其他可用工具在Linux上配置SQL Server 2017

    linux配置conf Configuration of any system plays a vital role in its working efficiently. However, conf ...

最新文章

  1. IronRuby - 如何在VS2010下调试IronRuby代码
  2. 《黑客与画家》读后感:你对技术一无所知(一些金句)
  3. 1.1 鞅、停时和域流-随机过程的可测性(布朗运动与随机计算【习题解答】)
  4. Linux——基础IO(总结)
  5. oracle定时关闭job,Oracle 定时JOB
  6. git灰度发布版本_spring cloud灰度发布
  7. linux 图片编辑 java_Java的图片处理工具类
  8. Linux环境编程:fork系统调用及其陷阱 - 内存复用,文件不复用
  9. javascript性能
  10. 循环匹配对应筛选(2)
  11. 国内Maven仓库--阿里云Aliyun仓库地址及设置
  12. Kaptcha简单使用
  13. 阿越-临江仙:见《十字-声名雀起》
  14. 《数据驱动 从方法到实践》之 数据驱动的环节 学习总结
  15. matlab求解外推法和黄金分割法
  16. elasticsearch学习 part4
  17. zxing二维码的使用
  18. 三大集合:List、Map、Set
  19. 「Spring Boot」接口幂等性的4种实现方案
  20. [附源码]Python计算机毕业设计东北鹿产品售卖网站Django(程序+LW)

热门文章

  1. 如何将一键还原精灵备份文件复制出来?
  2. 易捷win10系统电脑卡在“正在关机”界面怎么处理?
  3. Android环信爬坑指北(二)头像昵称好友备注显示
  4. 自整理IE6,IE7,IE8,Firefox兼容方案。。。
  5. 常用的Linux命令,日常收集记录
  6. 简单的ALV显示例子
  7. Unity 之事件系统
  8. [转帖]Linux中的15个基本‘ls’命令示例
  9. python+pywinauto之PC端自动化一
  10. 【20171031早】sqli-libs Less 16,17 和live http headers 使用问题