在工作中需要在Linux服务器上访问MS SQL Server数据库,我马上就想到了适用ODBC接口进行实现,毕竟它的移植性更好。

首先需要选一种支持MS SQL Server的ODBC驱动,商业的不能考虑,只能考虑开源的,于是,FreeTDS进入了视野,从官网(http://www.freetds.org/)上下载了它的0.91版本的包,在安装它之前需要安装libiconv,这个库用于进行编码转换。

开始安装!

1,从unixODBC官网(www.unixodbc.org)下载2.3.2版本

./configure --enable-gui=no ; make ; sudo make install

2,安装libiconv,./configure ; make ; sudo make install

3,安装freetds,./configure --with-tdsver=7.0 --with-unixodbc=/usr/local --with-libiconv-prefix=/usr/local --enable-msdblib

说明,with-tdsver用于指定TDS协议版本,7.0就能支持目前新版本的MS SQL Server,with-unixodbc用于指定 unixODBC的安装路径前缀。

开始配置!

在/usr/local/etc下有三个关键的配置文件,freetds.conf,odbcinst.ini,odbc.ini,分别先说明了三个配置文件的作用,freetds.conf是用于定义具体的驱动信息,包括数据库地址、端口、协议版本、编码等,odbcinst.ini用于定义ODBC驱动,odbc.ini用于定义ODBC数据源。

freetds.conf中定义如下:

[FTDSMSSQLDB]

host = 192.168.0.1

port = 1433

tds version = 7.0

instance = TKVSDB

client charset = GBK   ;客户端的编码,即你的程序中实际使用的字符编码,freetds在提交数据时候会自动转换为服务器编码

initial block size = 1024

connect timeout = 60

timeout = 60

odbcinst.ini中定义如下:

[SQLServer]

Description = v0.91 with protocol v7.0

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

Setup = /usr/local/lib/libtds.so

UsageCount = 1

CPTimeout = 5

CPReuse = 5

FileUsage = 1

odbc.ini中定义如下:

[TESTDSN]

Driver = SQLServer

Description = MS SQL Server

Servername = FTDSMSSQLDB

Database = TOMDB  ;数据库名

颜色标注关联。

在程序中,就可以使用下面的连接串进行访问,如下:UID=sa;PWD=12345678;DSN=TESTDSN。

在实际使用中,我采用OTL(对ODBC的访问接口进行了封装)的API,这样能使代码更加简单一些,在引用otlv4.h头文件前需要加入下面几个宏,

#define OTL_ODBC_MSSQL_2008 // Compile OTL 4/ODBC, MS SQL 2005

#define OTL_FREETDS_ODBC_WORKAROUNDS // Enable the FreeTDS / ODBC workarounds for MS SQL

#define OTL_ODBC // Compile OTL 4/ODBC. Uncomment this when used with MS SQL 7.0/ 2000

#define OTL_ODBC_UNIX // Compile OTL 4 / ODBC. Uncomment this when used in Linux / Unix

#define OTL_STL // Turn on STL features

这样,就可以在代码中使用otl_connect进行访问了,简单的实例代码如下:

const char * dsn_string("UID=sa;PWD=12345678;DSN=TESTDSN");

otl_connect m_conn;

m_conn.rlogon(dsn_string,1);

后面就可以进行各种数据库操作了,详细请参见OTL的网站http://otl.sourceforge.net/。(当然,你需要设计一个自己的连接池,频繁的打开关闭连接是很耗时的)

希望对大家有帮助!

linux机器连接sql,在linux下连接MS SQL Server相关推荐

  1. john 探测(爆破)弱口令(包含linux机器,aix小机)/linux上的shadow文件破解,亲测可用

    john 探测(爆破)弱口令(包含linux机器,aix小机),linux上的shadow文件破解 手头上上面的机器居多,而且这些机器也是几经转折到了奴家的手上,前期已经出现了有几个密码是1234的情 ...

  2. php和windows对应,哪个.so文件可以用于windows系统中与.dll文件相对应的linux系统,以便将php连接到ms sql server...

    要从linux机器上的php5连接到Micrsoft SQL有点直观,你实际上需要使用sybase扩展和梨MDB2驱动程序来实现MS SQL.如果由于操作系统限制而无法安装MSSQL扩展,则PHP5中 ...

  3. quicksearch连接oracle,dos命令下连接oracle数据库表

    Oracle表空间文件损坏后的排查及解决 版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/zergskj/article/details/6303417 ...

  4. 本地连接不通的情况下连接vmbox

    1. 将"本地连接"和"VirtualBox Host-Only Ethernet Adapter"进行桥接.具体操作:按下Ctrl键不松手,左击选定需要桥接的 ...

  5. linux机器的物理内存监控,Linux内存监控工具

    本文为转载 http://www.opensolution.org.cn/archives/502.html 一.free 该工具主要是显示系统里可用和已用的内存 Linux 通常按一定的算法把常用的 ...

  6. linux机器不能上网,Deepin Linux 无法上网

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我又用回2008了 LINUX图形界面还是太慢 我的感觉太敏锐 虽然LINUX的图形界面的延迟 从你鼠标发出信号 到XSERVER的视觉呈现也就几百毫秒 ...

  7. 查看linux机器的磁盘空间,Linux查看磁盘空间命令分享

    在windows下可以很方便的查看空间的.但是到了查看磁盘空间,你可能就有点摸不着头脑了,呵呵.不要急,我这就要给你解决这个问题. Df命令是Linux查看磁盘空间系统以磁盘分区为单位查看文件系统,可 ...

  8. linux机器名查看命令,Linux终端查找PC主机名的3种方法

    就像Internet协议地址或IP地址为您的设备提供标识一样,主机名是另一个可以识别设备的参数.这是一串人类可以理解的字符.与IP地址不同,PC的主机名易于 记忆和调用.在本文中,我们将告诉您如何使用 ...

  9. oledb连接mysql_OLEDB 连接 和 效率(MS SQL 、Oracle 、ACESS)

    这半年手头的一个项目,自己写代码的时候偏爱 MS SQL.部署服务器装的是 ORALCE 和 实际的现场是小型机,压根没有装数据库只好选用 ACESS ,三种环境不一致,才决定用 OLEDB 做数据库 ...

  10. 安装、连接MS SQL Server 2000的问题

    1.  安装SQL 2000数据库和补丁时,如果出现"以前进行的程序安装创建了挂起的文件操作.运行程序之前,必须重新起动计算机."的提示. 如果不做改动,即使重新启动计算机也同样会 ...

最新文章

  1. 网页编程的过程中,怎样让改变标签的属性
  2. 成就更卓越、更有意义的人生
  3. 网络营销外包——网络营销外包专员如何做好网站搜索引擎优化
  4. Navigation execution entry point
  5. 红帽linux系统轴控系统,红帽发布企业版 Linux(RHEL) 8.0
  6. 【转】人工智能教程-前言
  7. Java 数组转字符串
  8. JasperServer 图表中文乱码解决
  9. python可以代替按键精灵吗_Python 假装自己是按键精灵
  10. 人工智能(AI)经历了怎样的发展历程?
  11. 常用的公共数据集(一)
  12. 以太网交换机的工作原理
  13. DBF文件简介(转)
  14. Pom.xml文件教程详解
  15. vue子元素点击事件与父元素点击事件冲突 子元素点击事件不触发
  16. unipush+java+个推实现app消息推送
  17. CSS控制文本超出打点显示
  18. 【GAMES104】 渲染的其他内容
  19. LeakCanary2.5版本使用
  20. NetBeans使用Consolas中文乱码的解决

热门文章

  1. phpmyadmin 连接数据库报错 HY000/1045 HY000 / 2002
  2. 服务主机superfetch占用磁盘过多
  3. 【报告分享】2021中国汽车产业发展年报-工信部
  4. 开源一款监控数据采集器,啥都能监控
  5. jBPM4教程 jBPM4视频教程推荐
  6. 10-59 查询选修某两门课程的学生
  7. EXCEL 固定对象将被移动
  8. 【图像处理】QR二维码识别与生成matlab代码
  9. python文件打开的默认模式_怎么改变pycharm文件打开方式
  10. ubuntu设置软件默认打开方式,以.py文件打开方式为例