[freetds] Microsoft SQL Server versions and FreeTDS

Frediano Ziglio freddy77 at gmail.com
Tue Apr 8 14:08:23 EDT 2014

2014-04-08 13:39 GMT+01:00 Geoff Montee <geoff.montee at gmail.com>:
> I wrote an open source TDS foreign data wrapper for PostgreSQL using your
> implementation of DB-Library:
> https://github.com/GeoffMontee/tds_fdw
> I mainly wrote it to connect to Sybase databases, but its compatibility
> with Microsoft SQL Server is a nice added benefit.
> Your TDS protocol page hasn't been updated in a while:
> http://www.freetds.org/userguide/choosingtdsprotocol.htm

Userguide on website refer to stable release, we are developing stuff
for mssql 2012 (mssql 2008 R2 have very small changes in the
protocol... mostly nothing!). Keep in mind that client and server
decide together the protocol to use. Actually all server versions
support protocols from 4.2 to protocol specific to the server version
(for instance 7.2 for mssql 2005). As client you can use whatever
protocol server provides.

> It's missing MS SQL Server 2008 R2, MS SQL Server 2012, and MS SQL Server
> 2014. I'm curious, does your implementation of DB-Library support these
> newer versions of MS SQL Server? I ask because Microsoft's own
> documentation says that they may drop DB-Library support in the future:
> http://technet.microsoft.com/en-us/library/aa174484%28v=SQL.80%29.aspx
> "While the DB-Library API is still supported in Microsoft SQL Server 2000,
> no future versions of SQL Server will include the files needed to do
> programming work on applications that use this API. Connections from
> existing applications written using DB-Library will still be supported in
> the next version of SQL Server, but this support will also be dropped in a
> future release. When writing new applications, avoid using DB-Library. When
> modifying existing applications, you are strongly encouraged to remove
> dependencies on DB-Library."

The reason is that Microsoft db-library only support protocol 4.2 (the
protocol introduced by... I think Sybase 4.2 before ms acquired
licences and forked the code! I never worked on such releases, for me
mssql starts with 7.0). Our db-library support newer versions, current
development up to 7.3. Well... in 7.3 (but not on 7.2) MS removed some
information (the text pointer) returning blob (text/image/ntext). This
means that functions relying on this information (mostly to insert
partial blobs) does not work. See for instance results on
freetds.sourceforge.net using protocol 7.3, some tests fail.
So, as long as you don't use text pointers you are safe until MS
remove support for protocol 7.3 (mssql 2008) while if you use text
pointers you are safe until MS remove support for protocol 7.2 (mssql

> Thanks,
> Geoff Montee


More information about the FreeTDS mailing list