Linux通过FreeTDS与unixODBC连接SQL Server配置指南

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

本文档详细记录了在Red Hat AS 5.5环境下,利用unixODBC框架配合FreeTDS驱动程序,成功连接Windows端SQL Server 2000数据库的配置流程,重点解决了端口防火墙设置、字符集兼容性及ODBC数据源配置等关键问题。

结果或目标

在Linux系统中无需安装SQL Server服务,而是通过ODBC协议远程连接Windows主机上的SQL Server数据库,确保应用程序可通过标准接口访问数据。

准备条件

  1. Windows端环境(以Windows XP Professional为例):
    • 已安装SQL Server 2000及SP3补丁(必须安装chs_sql2ksp3.exe,否则可能不开启1433端口)。
    • 已知数据库用户名和密码(例如用户autotest,密码autotest,数据库名atsdb)。
    • 确认TCP/IP 1433端口处于监听状态。可通过命令行执行 netstat -a 验证。
    • 关闭Windows系统自带防火墙,或开放1433端口通信权限。注意:Windows XP默认防火墙会阻止外部连接,且SQL Server有时需通过445/139端口通信,抓包分析有助于排查此类隐蔽拦截。
  2. Linux端环境:
    • 操作系统:Red Hat AS 5.5。
    • 所需安装包:unixODBC-2.2.8.tar.gz 和 freetds-0.62.4.tar.gz。
    • 操作权限:需要使用root用户进行安装和配置。

真实操作顺序

第1步:安装unixODBC框架

目的:提供标准的ODBC管理库,作为Linux应用与数据库驱动的中间层。

动作:解压并编译安装到指定路径。

# tar vxzf unixODBC-2.2.8.tar.gz
# cd unixODBC-2.2.8
# ./configure --prefix=/usr/local/unixODBC --enable-gui=no
# make
# make install

第2步:安装FreeTDS驱动

目的:安装用于连接Microsoft SQL Server和Sybase数据库的TDS协议驱动。

动作:指定unixODBC路径并配置TDS版本后编译安装。

# tar vxzf freetds-0.62.4.tar.gz
# cd freetds-0.62.4
# ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC --with-tdsver=8.0
# make
# make install

第3步:配置FreeTDS连接参数

目的:定义目标SQL Server服务器的IP、端口、TDS版本及字符集映射。

入口:编辑配置文件 /usr/local/freetds/etc/freetds.conf。

重要参数说明:

  • [SQLServer2000]:这是客户端引用服务器时的逻辑名称。
  • host:SQL Server的实际IP地址(如192.168.1.110)。
  • port:通常为1433。
  • client charset:客户端字符集。若连接出现乱码或失败,可尝试ISO-8859-1或UTF-8。某些环境下UTF-8会导致连接报错,建议根据实际反馈调整。

参考配置片段:

[global]
        tds version = 8.0
[SQLServer2000]
        host = 192.168.1.110
        port = 1433
        tds version = 8.0
        client charset = ISO-8859-1

第4步:验证FreeTDS基础连通性

目的:在不经过ODBC的情况下,直接测试底层驱动是否能连上数据库。

动作:使用 tsql 工具登录。

$ /usr/local/freetds/bin/tsql -S SQLServer2000 -U autotest -P autotest

若显示“Changed language setting...”并能执行SQL语句(如 use atsdb; select * from auth_function;),则说明FreeTDS配置成功。

第5步:配置unixODBC驱动注册表

目的:告诉unixODBC系统存在一个名为“SQLSERVER”的驱动及其动态链接库位置。

入口:编辑文件 /usr/local/unixODBC/etc/odbcinst.ini。

添加以下内容:

[ODBC]
Trace     = Yes
TraceFile = /tmp/sql.log
ForceTrace = Yes
Pooling   = No
[SQLSERVER]
Description  = SQLSERVER Driver
Driver       = /usr/local/freetds/lib/libtdsodbc.so
Setup        = /usr/local/freetds/lib/libtds.so
CPTimeout    = 5
CPReuse      = 5

第6步:创建并配置DSN(数据源名称)

目的:将具体的服务器信息、数据库名和账号绑定到一个易用的名字(如ATSDB)。

入口:编辑文件 /usr/local/unixODBC/etc/odbc.ini。

注意:这里的 Driver 字段必须与 odbcinst.ini 中定义的驱动名称一致;Database 为要连接的库名。

[ATSDB]
Driver          = SQLSERVER
Description     = MS SQL Server Database
Server          = 192.168.1.110
Database        = atsdb
Port            = 1433
UID             = autotest
PWD             = autotest

若有多个服务器,可添加新的Section(如 [ATSDB2]),但注意Section名称即DSN名称,不可重复。

第7步:最终ODBC连接测试

目的:通过isql工具模拟应用程序调用,确认整个链路通畅。

动作:运行 isql 命令连接刚才创建的DSN。

# /usr/local/unixODBC/bin/isql -v ATSDB autotest autotest

输出示例:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| echo [string]                         |
| quit                                  |
|                                       |
+---------------------------------------+

输入 quit 退出。若提示Can't open lib...等错误,请检查LD_LIBRARY_PATH环境变量是否包含FreeTDS的lib目录。

完成判断

当 isql -v DSN名称 用户名 密码 命令成功返回“Connected!”并可执行查询时,表示Linux到SQL Server的ODBC连接配置已完成。

原文有依据的排错

  • 无法连接或超时:首先确认Windows端防火墙已关闭1433端口限制。其次使用 telnet ip 1433 测试网络端口可达性。若连接不上,可能是未打SQL SP3补丁导致端口未开启。
  • 字符集警告或乱码:FreeTDS连接日志中出现“character(s) could not be converted”属于常见警告,不影响核心数据读取,但若需严格匹配,请在 freetds.conf 中调整 client charset 为ISO-8859-1或UTF-8进行切换试验。
  • 找不到驱动 (libtdsodbc.so missing):检查 odbcinst.ini 中的 Driver 绝对路径是否正确,并确保该文件存在于Linux系统中。

简要总结

通过上述步骤,在Linux环境下建立了一条稳定的SQL Server ODBC通道。关键在于理解FreeTDS作为底层协议转换器与unixODBC作为上层管理器的分工,以及细心处理Windows端的网络与安全策略设置。

以上就是linux下配置SQLSERVER ODBC的详细流程,更多关于Linux数据库连接的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。