文档章节

在linux下连接MS SQL Server

Kevin6188
 Kevin6188
发布于 2013/11/04 13:39
字数 659
阅读 6474
收藏 37

      在工作中需要在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/。(当然,你需要设计一个自己的连接池,频繁的打开关闭连接是很耗时的)

     希望对大家有帮助!


© 著作权归作者所有

下一篇: C和C++互调
Kevin6188

Kevin6188

粉丝 27
博文 15
码字总数 10947
作品 7
房山
程序员
私信 提问
MSSQL(SQL Server) on Linux 简明部署与使用

标签 PostgreSQL , ms sql , SQL Server 背景 本文介绍MS SQL on Linux的简单部署,使用。 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sql-serve......

德哥
04/14
0
0
53.Azure中CentOS的Docker里安装运行SQL Server容器

大家熟悉SQL Server可以安装在Windows系统上,我也介绍了SQL Server可以安装在LInux上,那么今天我将给大家介绍SQL Server安装在Docker上成为容器快速运行起来 首先需要创建一台CentOS 指定虚...

ZJUNSEN
2018/07/30
0
0
Django2.1连接使用SQL Server(linux版)

声明 本人示例环境: - 系统版本:centos7.1 64位 - 数据库版本:SQL Server2012 - python版本:Python 3.6.3 - Django版本:Django2.1 - 连接数据库工具:pyodbc,Microsoft ODBC Driver 之...

ZHAO_JH
05/06
86
0
.NET Core开发日志——Linux版本的SQL Server

SQL Server 2017版本已经可以在Linux系统上安装,但我在尝试.NET Core跨平台开发的时候使用的是Mac系统,所以这里记录了在Mac上安装SQL Server的过程。 最新的SQL Server没有专门为Mac系统准...

Ken.W
2018/08/27
0
0
AlwaysOn 2017新特性和提升

AlwaysOn 2017新特性和提升 AlwaysOn 2017一些新特性和增强: l 可用性组参数配置:最小提交辅助副本数(REQUIREDCOPIESTO_COMMIT) l 读取缩放可用性组(Read-scale availability groups) ...

UltraSQL
2018/05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JS实现使用Math.random()函数生成n到m间的随机数字

Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包含n但不包含m的整数: 第一步算出 m-n的值,假设等于w 第二步Math.random()*w 第三步Math.random()*w+n...

张兴华ZHero
21分钟前
3
0
入门了解Service Mesh + Istio?从本文开始

下周六,深圳,阔别已久的线下技术沙龙要和你见面啦! 现场有Rancher Labs研发经理demo刚刚发布的Rancher 2.3中的Istio、Windows容器、集群模板等功能及使用,还有k3s首次线下workshop,由R...

RancherLabs
22分钟前
3
0
Gradle 发布 Jar 到 Archiva 时提示不能 Overwriting released artifacts is not allowed

系统提示错误信息: Received status code 409 from server: Overwriting released artifacts is not allowed. 这是在 Archiva 默认的配置下如果你不是使用 snapshot 配置的话,是不允许对仓...

honeymoose
23分钟前
3
0
二维码插件之qrcode.min.js

文件链接百度云地址 https://pan.baidu.com/s/1nWiBuT4Z7WOAMoUEFL8PZg 入门 http://www.jq22.com/jquery-info294 使用jquery.qrcode.min.js实现前台二维码生成(带Logo) https://blog.csd......

木九天
33分钟前
3
0
开源 java CMS - FreeCMS2.8 自定义标签 commentPage

项目地址:http://www.freeteam.cn/ commentPage 根据参数提取评论对象。 参数 说明 siteid 站点id objtype 评论对象类型 objid 评论对象id membername 会员名称 isanonymous 是否匿名 1是 ...

freeteam
33分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部