Linux平台使用odbc连接sqlserver

前言

  • 最近在Linux平台开发shiny APP,需要使用odbc统一数据资源管理器的方式连接上sqlserver。曾在网上搜索过很多教程,也经历过很多坑,今天我把整理好的内容发布在这里,希望能够帮助后来者吧。
  • 当然要在Linux平台上连接sqlserver,首先你需要知道sqlserver的网络地址及服务端口,其次还需要拥有一个可以远程登录sqlserver的账户。

安装FreeTDS驱动

  • FreeTDS是一款可以用于连接SQLServer和Sybase开源驱动程序,你可以在这里下载。下载完成后需要对源码包进行编译安装,只要将源码包放在当前工作目录下,执行以下命令即可完成安装(如果你的FreeTDS版本不同,请修改命令中的源码包名称)。
tar vxzf freetds-0.91.100.tar.gz
cd freetds-0.91.100
./configure --prefix=/usr/local/freetds 
make
make install

配置FreeTDS驱动

  • 安装完成后,我们需要在/etc/freetds/freetds.conf中配置连接SQLServer的信息(不同版本的Linux系统存放文件的位置可能不同,你可以通过locate freetds.conf命令查看FreeTDS配置文件的可能位置)。该文件中默认已经有了配置连接信息的示例,我们只需追加以下信息即可(注意修改host、port为你真实的数据库网络地址与端口)。
[SQLSERVER]					# TDS服务名称
        host = serverIP				# 数据库网络地址
        port = 1433				# 数据库网络端口
        tds version = 8.0			# TDS版本号
        client charset = UTF-8			# 客户端字符集
  • 接下来我们尝试使用命令tsql -S SQLSERVER -U username来连接SQLServer(其中-S指定了已经配置好的 TDS服务名称,-U指定登录数据库的用户名),连接成功则证明驱动配置正确。如果连接出现错误,很可能是因为tds version设置的不正确,你可以尝试修改该值重新连接。

Linux平台使用odbc连接sqlserver_第1张图片

安装unixodbc

  • 现在FreeTDS已经可以正常连接sqlserver了,但我们需要用odbc管理器的方式连接sqlserver。所以这里我们首先需要下载unixodbc。Ubuntu的软件仓库中已经集成了该软件,我们只需执行以下一条命令即可完美安装。 当然你也可以点击这里手动下载安装unixodbc。
sudo apt-get install unixodbc

修改unixodbc配置文件

  • 接下来我们需要修改一些配置文件,为unixodbc指明数据库驱动程序所在位置及连接数据库所需要的认证信息。你应该按照实际情况修改下列配置信息中的具体值。
  1. /etc/odbcinst.ini中配置驱动程序
[FreeTDS]					# unixodbc驱动名称
Description=FreeTDS driver			# 简介	
Driver=/usr/local/freetds/lib/libtdsodbc.so	# 驱动所在位置
  1. /etc/odbc.init中配置数据库连接认证
[mssql]						# DSN名称
Description = sqlserver connection		# 简介
Driver = FreeTDS				# 已经配置好的unixodbc驱动名称
TDS_Version = 8.0				# TDS版本号
Trace = On					# 是否输出日志信息
TraceFile = stderr				# 日志信息输出位置
Server = serverIP				# 数据库网络地址
Port = 1433					# 数据库网络端口
User = username					# 登录数据库的用户名
Password = password				# 登录数据库的用户密码
Database = dbname				# 需要连接的数据库名称

测试是否能连接成功

  • 现在我们已经完成了所有的配置,只需要一条命令就可以完成连接了(注意替换命令中的用户名与密码)。
isql mssql username password

Linux平台使用odbc连接sqlserver_第2张图片

你可能感兴趣的:(学习笔记)