在linux上配置unixODBC和FreeTDS访问MS SQL Server.

2023-11-09 21:48

本文主要是介绍在linux上配置unixODBC和FreeTDS访问MS SQL Server.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一, 安装 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即可.

这篇关于在linux上配置unixODBC和FreeTDS访问MS SQL Server.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/378611

相关文章

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.