Microsoft ODBC Driver 11 for SQL Server on Ubuntu

来源:互联网 发布:mac安装hexo 编辑:程序博客网 时间:2024/05/03 13:57

在linux有时候程序也需要连接windows服务器下的MS Sql-server数据库服务器,这个时候要需要使用odbc的驱动了.我目前知道有两种现有的方式(不包括自己动手写驱动的).第一种就是使用

unixODBC+FreeTDS 这种使用方法也挺多的,我没有使用过,不清楚.第二种方式就是unixODBC+Microsoft® ODBC Driver 11 for SQL Server® - RedHat Linux 注意不需要使用Microsoft® ODBC Driver 11 for SQL Server® - SUSE Linux ,因为后面这个驱动版本使用的libssl是0.9.8版本的,在ubuntu14.04上面,默认安装的是libssl1.0.0版本.所以最好使用unixODBC+Microsoft® ODBC Driver 11 for SQL Server® - RedHat Linux.可能大家有一个担心就是,用在RedHat 上面的包,在ubuntu14.04上面能不能行,我告诉你,可以,只需要注意一点点就可以了.所以只需要从微软下载RedHat6\msodbcsql-11.0.2270.0.tar.gz这个版本就可以了,注意下面的说明

Microsoft SQL Server 2008, 2008 R2, SQL Server 2012, SQL Server 2014 and Windows Azure SQL Database. Microsoft ODBC Driver 11 for SQL Server also comes with powerful tools - sqlcmd and bcp.

知道可以连接那些数据库,还是要注意的.如果使用的是Microsoft SQL Server 2005,那么你就要试一下了,我没有试验过是不是可以成功.下载页面在这里:

https://www.microsoft.com/en-us/download/details.aspx?id=36437

看上面的说明,需要的库包括如下:

glibc  libgcc libstdc++ krb5-libs openssl libuuid

下载以后,解压

tar xvzf msodbcsql-11.0.2270.0.tar.gz.

执行

./build_dm.sh --help
会失败,这是因为shell是为redhat设计的,所以在ubuntu下可以这么干,用vim修改这个build_dm.sh,第一行

#!/bin/sh
修改成

#!/bin/bash

然后执行就可以了.这个YES以后,看提示,就明白,已经安装好了 unixODBC.

然后就可以安装Microsoft® ODBC Driver 11 for SQL Server®了,用vim修改这个install.sh的第一行,以上面一样.然后执行命令如下:

./install.sh verify

发现出了问题如下:

./install.sh: line 233: rpm: command not foundChecking for 64 bit Linux compatible OS ..................................... OKChecking required libs are installed ................................. NOT FOUNDunixODBC utilities (odbc_config and odbcinst) installed ............ NOT CHECKEDunixODBC Driver Manager version 2.3.0 installed .................... NOT CHECKEDunixODBC Driver Manager configuration correct ...................... NOT CHECKEDMicrosoft ODBC Driver 11 for SQL Server already installed .......... NOT CHECKEDMicrosoft ODBC Driver 11 for SQL Server files copied ........................ OKSymbolic links for bcp and sqlcmd created ................................... OKMicrosoft ODBC Driver 11 for SQL Server registered ................... INSTALLED
由于这个driver是给Red Hat 用的,debian下的一些依赖库就不能被侦测到。需要做一些符号链接来让它找到依赖库的位置
查看缺少的依赖库然后进入 lib64目录下,看一下

 ldd lib64/libmsodbcsql-11.0.so.2270.0 | grep not
会发现如下的问题:

libcrypto.so.10 => not foundlibssl.so.10 => not found
这个时候到目录下,建立符号链接

cd /usr/lib/x86_64-linux-gnusudo apt-get install libssl-devsudo ln -s libssl.so.1.0.0 libssl.so.10sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10

然后再执行

 ldd lib64/libmsodbcsql-11.0.so.2270.0 | grep not
就会发现没有问题了.这个时候还是会出现如下问题,

<pre name="code" class="cpp">./install.sh: line 233: rpm: command not foundChecking for 64 bit Linux compatible OS ..................................... OKChecking required libs are installed ................................. NOT FOUNDunixODBC utilities (odbc_config and odbcinst) installed ............ NOT CHECKEDunixODBC Driver Manager version 2.3.0 installed .................... NOT CHECKEDunixODBC Driver Manager configuration correct ...................... NOT CHECKEDMicrosoft ODBC Driver 11 for SQL Server already installed .......... NOT CHECKEDMicrosoft ODBC Driver 11 for SQL Server files copied ........................ OKSymbolic links for bcp and sqlcmd created ................................... OKMicrosoft ODBC Driver 11 for SQL Server registered ................... INSTALLED

怎么办?不办了,强制装:

sudo ./install.sh install --force
显示如下:

/install.sh: line 233: rpm: command not foundChecking for 64 bit Linux compatible OS ..................................... OKChecking required libs are installed ................................. NOT FOUNDunixODBC utilities (odbc_config and odbcinst) installed ............ NOT CHECKEDunixODBC Driver Manager version 2.3.0 installed .................... NOT CHECKEDunixODBC Driver Manager configuration correct ...................... NOT CHECKEDMicrosoft ODBC Driver 11 for SQL Server already installed .......... NOT CHECKEDMicrosoft ODBC Driver 11 for SQL Server files copied ........................ OKSymbolic links for bcp and sqlcmd created ................................... OKMicrosoft ODBC Driver 11 for SQL Server registered ................... INSTALLED
看起来问题很大,其实用起来根本没有问题.

注意的是,不要用 tsql来测试,因为它会用kerbose认证,而默认kerbos好像启动不了,回头我要看一下这个方面的问题.用sqlcmd来测试是不是安装成功.看起来是可以的

用以下命令

sqlcmd -U username -S ip,port

这个时候应该可以连接成功,然后输入密码,就可以登录和查询了,详细命令,去看一下微软的说明吧.至于 为什么不支持kerbose,我也没有搞清楚,今天太晚了,下班闪人了.



























0 0