Linux Centos7.2 安装 unixODBC 与 FreeTDS 连接 SQL Server
在 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.gzfreetds-1.3.9.tar.gz
真实操作顺序
第1步:安装编译依赖
在进行源码编译前,系统需安装 GCC 编译器。
yum install gcc
第2步:安装 unixODBC 框架
注意:必须先安装 unixODBC,后安装 FreeTDS。若顺序颠倒,可能无法生成关键的驱动文件 libtdsodbc.so。
- 解压安装包:
tar -xvf unixODBC-2.3.9.tar.gz cd unixODBC-2.3.9
- 配置安装路径(建议指定prefix以便管理):
./configure --prefix=/usr/local/unixODBC
- 编译并安装:
make make install
第3步:安装 FreeTDS 驱动
FreeTDS 需要链接到 unixODBC 以提供 ODBC 接口。
- 解压安装包:
tar -xvf freetds-1.3.9.tar.gz cd freetds-1.3.9
- 配置时指定 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 配置的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









