Linux Centos7.2 安装 unixODBC 与 FreeTDS 连接 SQL Server

Oliver
Oliver
发布时间:2026-10-15 | 4人浏览过
原创

在 Linux CentOS 环境中连接 SQL Server 数据库,通常需要通过 ODBC 接口实现。本文将详细介绍如何通过在 Linux 上编译安装 unixODBC 框架和 FreeTDS 驱动,完成环境配置并验证连接稳定性,支持命令行查询及 Shell 脚本调用。

结果或目标

在 Linux 服务器(如 CentOS 7.2)上成功部署 unixODBC 和 FreeTDS,配置正确的 DSN(数据源名称),能够通过命令行工具 isql 连接远程 SQL Server 数据库,并在 Shell 脚本中执行 SQL 语句或存储过程。

准备条件

  • 操作系统:CentOS 7.2(或其他兼容的 Linux 发行版)
  • 权限:root 或具有 sudo 权限的用户账号
  • 网络:服务器需能访问目标 SQL Server 的 IP 地址和端口(默认 1433)
  • 软件包:
    • unixODBC-2.3.9.tar.gz
    • freetds-1.3.9.tar.gz

真实操作顺序

第1步:安装编译依赖

在进行源码编译前,系统需安装 GCC 编译器。

yum install gcc

第2步:安装 unixODBC 框架

注意:必须先安装 unixODBC,后安装 FreeTDS。若顺序颠倒,可能无法生成关键的驱动文件 libtdsodbc.so。

  1. 解压安装包:
tar -xvf unixODBC-2.3.9.tar.gz
cd unixODBC-2.3.9
  1. 配置安装路径(建议指定prefix以便管理):
./configure --prefix=/usr/local/unixODBC
  1. 编译并安装:
make
make install

第3步:安装 FreeTDS 驱动

FreeTDS 需要链接到 unixODBC 以提供 ODBC 接口。

  1. 解压安装包:
tar -xvf freetds-1.3.9.tar.gz
cd freetds-1.3.9
  1. 配置时指定 unixODBC 的安装路径:
./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC/
make
make install

第4步:配置 FreeTDS 全局参数

编辑配置文件 /usr/local/freetds/etc/freetds.conf,在文件末尾添加 SQL Server 连接定义:

[SQLServer]
    host = serverip      # 替换为实际 SQL Server IP
    port = 1433          # 替换为实际端口
    tds version = 7.3    # TDS协议版本,常见值为 7.2 或 7.3

此处的 [SQLServer] 是别名,后续连接时将使用此名称指定主机。

第5步:测试 FreeTDS 连通性

使用 FreeTDS 自带的 tsql 命令测试是否能连上 SQL Server:

/usr/local/freetds/bin/tsql -S SQLServer -U sa

输出示例:

Password: 
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>

若出现 1> 提示符且能输入 SQL 语句,说明 FreeTDS 基础连接正常。若报错,请检查 tds version 是否匹配服务端版本(如降级为 7.2 重试)。

第6步:配置 unixODBC 驱动与数据源

为了让应用程序能通过标准 ODBC 接口连接数据库,需配置两个关键文件:

1. 配置驱动程序 (odbcinst.ini):

编辑 /usr/local/unixODBC/etc/odbcinst.ini,注册 FreeTDS 驱动路径:

[FreeTDS]                 # 驱动名称描述
Description=FreeTDS Driver
Driver=/usr/local/freetds/lib/libtdsodbc.so

2. 配置数据源 (odbc.ini):

编辑 /usr/local/unixODBC/etc/odbc.ini,定义具体的 DSN(Data Source Name):

[mssql]                  # DSN 名称,应用连接时使用
Description=sqlserver connection
Driver=FreeTDS           # 引用上面定义的驱动名
TDS_Version=7.3          # 必须与 freetds.conf 一致
TRACE=On                 # 开启调试日志(可选)
TraceFile=stderr         # 日志输出位置
Server=serverip          # 实际服务器IP
Port=1433                # 实际端口
User=name                # 登录用户名
Password=pwd             # 登录密码
Database=db name         # 默认连接的数据库

第7步:使用 isql 验证 ODBC 连接

使用 unixODBC 提供的 isql 工具进行测试,DSN 名为 mssql:

/usr/local/unixODBC/bin/isql mssql name pwd

成功连接标识:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from sys.objects...

注意:由于 odbc.ini 中已配置默认数据库,查询时直接使用表名即可,无需加 dbname.dbo.table 前缀,否则可能因上下文错误导致查询失败。

第8步:Shell 脚本中调用 ODBC

在 Shell 脚本中可通过管道或临时文件方式使用 isql 执行 SQL。

方法一:直接变量赋值

SQL="/usr/local/unixODBC/bin/isql mssql sa 123"
i_sql=" exec dbo.bulkinsert 10,20,'dbo.stu';"
echo $i_sql
result=`echo $i_sql|$SQL`

方法二:Here Document (推荐)

EMPLOYEES=`isql mssql sa 123 <<EOF
   select * from Student;
   go
   EOF`
echo "$EMPLOYEES"

方法三:使用临时文件

echo "select * from Student" > $TMP/sql.$$
EMPLOYEES=`isql mssql sa 123 -i $TMP/sql.$$`
rm $TMP/sql.$$

第9步:SQL Server 端调用存储过程(Windows/Linux 混合场景)

如果在安装了 SQL Server 的 Windows 机器上需要通过命令行调用存储过程,可使用 osql 或 sqlcmd 工具:

osql.exe -S ip -U sa -P 123 -d WAI -Q "exec dbo.bulkinsert %start%,%end%,stu'

简要总结

通过以上步骤,您在 Linux 上建立了完整的 unixODBC + FreeTDS 连接链路。关键在于先装 unixODBC 再装 FreeTDS 以保证驱动文件生成,以及确保 odbcinst.ini 中的驱动路径和 odbc.ini 中的 TDS 版本与实际配置一致。连接成功后,既可用于日常运维查询,也可集成至 Shell 自动化任务中。

以上就是 Linux 安装 ODBC 连接 SQL Server 数据库的详细操作步骤,更多关于 Linux 数据库管理与 ODBC 配置的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表