FreeTDS 如何让 Unix/Linux 程序连接 SQL Server 和 Sybase?
FreeTDS 是一组面向 Unix 和 Linux 的库,让程序能够直接与 Microsoft SQL Server 和 Sybase 数据库通信。它本质上是对 TDS(Tabular Data Stream,表格数据流)协议的开源实现——SQL Server 和 Sybase 的官方客户端正是用这个协议与数据库对话。因此,只要程序链接了 FreeTDS,就不必依赖数据库厂商提供的原生驱动,也能在 Unix/Linux 上完成连接、查询和数据交换。
它解决的核心问题
SQL Server 和 Sybase 的官方客户端长期以 Windows 为主要平台。当业务代码或数据位于 Unix/Linux 一侧时,缺少可用的原生驱动会形成障碍。FreeTDS 通过自行实现 TDS 协议填补了这个缺口:
- 协议层面:TDS 是数据库与客户端之间的私有通信格式,FreeTDS 支持该协议的多种版本(flavors),以适配不同版本的 SQL Server 和 Sybase。
- 平台层面:它为 Unix/Linux 提供可用的通信能力,使这些系统上的程序能像官方客户端一样访问数据库。
- 语言层面:除 C 库外,还提供三种 API 供调用,并可配合 Perl、PHP 等语言使用,让这些语言也能接入 SQL Server 和 Sybase。
典型使用场景
FreeTDS 的用途并不局限于某一种架构,常见的方向包括:
- Unix/Linux Web 服务器把存储在 SQL Server 中的数据呈现到网页上;
- 将原本运行在 NT 上的 SQL Server 数据库代码迁移到 Unix;
- 从 Unix 数据源向 SQL Server 导入数据;
- 在没有原生驱动的平台上(例如实时系统)提供数据库访问能力。
这些场景的共同点是:数据在 SQL Server 或 Sybase,而访问方在 Unix/Linux,且不希望或无法依赖官方驱动。
授权与获取方式
FreeTDS 的 C 库采用 GNU LGPL 许可证发布,具体条款可查阅发行包中的 COPYING.LIB 文件。网站提供了稳定版本(1.5.19)和每日快照,以及文档、FAQ、用户指南和参考手册等资料,源码可通过 Git 仓库获取。
如果你的任务是在 Unix/Linux 上连接 SQL Server 或 Sybase,且受限于平台或驱动可用性,FreeTDS 是一个可直接评估的开源方案;若你的环境已有官方驱动或运行在 Windows 上,则未必需要引入它。