在工作中需要在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 server,在linux下连接MS SQL Server相关推荐

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

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

  2. Linux外网远程登录访问内网主机

    Linux外网远程登录访问内网主机 远程登录软件:Xshell6 主机系统:ubuntu-19.10-desktop-amd64 连接协议:ssh 虚拟机:VMware Workstation 16 ...

  3. freebsd php 编译 mysql sql2005_问下:Freebsd下用php连接ms sql server

    你的位置: 问答吧 -> PHP -> 问题详情 问下:Freebsd下用php连接ms sql server 大家都怎么连接的,,,效率如何? 作者: james.liu 发布时间: 2 ...

  4. PHP 8.0 连接 MS SQL Server

    PHP 8.0 连接 MS SQL Server 手欠,把php 7.4升级到了8.0,结果连接不上sql server了,当然是最新的驱动不匹配了,折腾了半天,终于找对版本了. 驱动下载网址: 微软 ...

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

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

  6. Linux系统网速测速,Linux系统下的网络带宽测速

    网络测速 speedtest 下载通过直接下载SpeedTest脚本,给权限运行脚本即可 [root@localhost ~]# curl -o speedtest-cli https://raw.g ...

  7. linux外网服务器跳转内网服务器实现内网访问(iptables)

    服务器信息如下 外网服务器:eth0:公网IP eth1:内网IP(192.168.10.205) 公网对外提供服务,内网IP与内部局域网通信. 配置过程: (1)开启iptables service ...

  8. 外网win10 64位环境下 为内网win7 32位安装三方包的最靠谱手段:python64位、32位全安装。...

    经过一周的各种折磨,如题.以下是我的经验和教训. 我的外网是win10 64位,内网环境win7 32位.由于未知原因,anaconda无法安装!!! 其实最靠谱的安装三方包的还是whl包.但是很有可 ...

  9. 解决elasticsearch开启外网访问,绑定IP下,浏览器访问超时问题

    使用浏览器外网访问时,返回超时,time_out,查看防火墙,关闭(centos6,7防火墙命令不一样)

最新文章

  1. Image Processing图像处理(对比俩张图像的差异并且在图上标注出来)
  2. C# static的用法详解
  3. 转子接地保护原理_发电机转子一点接地保护的研究
  4. 你所不知道的端口号知识!
  5. python 定义数组
  6. oracle 时间加减
  7. python制作窗口界面_python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
  8. 力扣26--删除有序数组中的重复项
  9. 【李宏毅2020 ML/DL】P34 More about explainable AI | Attribution, Heatmap, explainable model
  10. 小小的起步VMware vSphere之二
  11. 高清银行LOGO图片整合分享
  12. [C++杂谈]:MFC中使用excel2007读写excel表格
  13. ArcMap下停靠栏的设计与实现
  14. python——字符串练习:句子反转(小米笔试题)
  15. 东方财富 自动止损程序
  16. linux python2升级到python3(源码编译安装)
  17. CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
  18. 第二章 项目经理评分
  19. javascript 高级程序设计(第三版)读后归纳
  20. Dev-C++5.11游戏创作之简易小炸弹

热门文章

  1. TensorFlow - TF-Slim 使用总览
  2. 为什么 Activity 都重建了 ViewModel 还存在?—— Jetpack 系列
  3. c++ #define 用法
  4. 好开心!Google收录了我的BLOG!
  5. 迷你php框架,PHP 开源框架 MiniFramework 发布 2.0.0 版
  6. 华为技术有限公司-上海交通大学联合研究院成立!
  7. 写了一个测试风水的程序
  8. 为什么PHP项目运行报错502,Nginx+PHP-FPM遇到的502报错
  9. Transferrin-PEG-PMMA 转铁蛋白-聚乙二醇-聚甲基丙烯酸甲酯,F-PEG-PBA/PAE/PPS
  10. C# vb .NET生成QR二维码