Linux(deepin)使用tsql(FreeTDS)及isql(ODBC)访问SQL Server

1、简介

  要在Linux系统访问Windows中的SQL Server数据库,查找资料可以使用FreeTDS程序库,断断续续搞了好久都没弄好,网上的教程基本如出一辙,可能不适用于大多数人,所以有些水还得自己淌一遍,坑也得踩一遍。

2、环境

(1)操作系统:deepin 社区版(20.9) 64位,虚拟机VMware上操作
(2)数据库:SQL Server 2008,服务/实例名为SQLTEST,数据库名为test,用户名为sa,密码为123456

3、安装验证

  参考阅读:FreeTDS 安装说明
  在安装说明中,两个表格分别列出了SQL Server各版本数据库对TDS Version及FreeTDS Version的版本要求,根据对应版本下载或配置,比如2008,需要TDS Version为7.3,FreeTDS Version为0.95及以上。

3.1 安装unixODBC-2.3.9

(1)下载地址:https://src.fedoraproject.org/repo/pkgs/unixODBC/
(2)复制安装包(unixODBC-2.3.9.tar.gz)到桌面(或其他位置/路径),在当前位置打开终端执行:

tar -xvf unixODBC-2.3.9.tar.gz
cd unixODBC-2.3.9/
./configure --prefix=/usr/local/unixODBC
make
sudo make install

3.2 安装freetds-1.3.9

(1)下载地址:http://ftp.freetds.org/pub/freetds/stable/https://www.freetds.org/files/stable/?C=S;O=A
(2)复制安装包(freetds-1.3.9.tar.gz)到桌面,打开终端执行:

tar -xvf freetds-1.3.9.tar.gz
cd freetds-1.3.9/
./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC/ --with-tdsver=7.3 --enable-msdblib --without-openssl
make
sudo make install

【注1】with-tdsver用于指定TDS协议版本,enable-msdblib表示启用微软数据库函数库,without-openssl表示不使用openssl加密(一般情况是不需要ssl加密通信的,较早的FreeTDS版本,是直接不支持openssl加密的,因此不需要指定without-openssl)。
【注2】如果未指定without-openssl,则表示开启openssl,连接数据库时会出错,如下图所示:

开启openssl 连接失败
未开启openssl 连接成功

3.3 验证tsql(FreeTDS)

(1)验证连接(以 -H 直接指定Host访问)
freetds安装位置:/usr/local/freetds/,查看freetds安装结果、tds版本及配置文件所在位置:

cd /usr/local/freetds/bin/
./tsql -C
./tsql -H 172.16.0.43 -p 65077 -U sa -P 123456

【注】为什么端口是65077呢?默认端口应该是1433,我用1433一直报错,以为是哪里需要添加服务/实例名,直到看到这篇文章,查找对应实例的端口,就连通了。至于用1433为什么连不通,还没明白,待以后排查验证,也希望有大佬指点。补充:下图中65077为TCP动态端口,在下面TCP端口中输入1433,然后重启服务(如果重启失败,可以先将sql相关服务全部停掉,再启动),就可以使用1433连通了。

查看端口
验证连接

(2)验证连接(以 -S 指定ServerName访问)
配置服务名:

cd ../etc/
sudo vim freetds.conf

在文件最后输入以下内容:

[SQLServer]
        host = 172.16.0.43
        port = 65077
        tds version = 7.3

验证:

cd ../bin/
./tsql -S SQLServer -U sa -P 123456

在这里插入图片描述

3.4 验证isql(ODBC)

(1)配置数据源

cd /usr/local/unixODBC/bin/
./odbcinst -j
sudo vim /usr/local/unixODBC/etc/odbc.ini

输入以下内容,第一行的SQLServerODBC即DSN数据源名称:

[SQLServerODBC]
Description=
Driver=/usr/local/freetds/lib/libtdsodbc.so
TDS_Version=7.3
Server=172.16.0.43
Port=65077
User=sa
Password=123456
Database=test

也可以在odbcinst.ini文件中配置好驱动,odbc.ini中配置数据源时调用配置好的驱动名,如下图所示:
在这里插入图片描述

(2)验证

./isql SQLServerODBC sa 123456

在这里插入图片描述

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值