Need help with tds_fdw?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

257 Stars 82 Forks Other 272 Commits 110 Opened issues


A PostgreSQL foreign data wrapper to connect to TDS databases (Sybase and Microsoft SQL Server)

Services available


Need anything else?

Contributors list

TDS Foreign data wrapper

  • Author: Geoff Montee
  • Name: tds_fdw
  • File: tds_fdw/


Logo SVG


This is a PostgreSQL foreign data wrapper that can connect to databases that use the Tabular Data Stream (TDS) protocol, such as Sybase databases and Microsoft SQL server.

This foreign data wrapper requires a library that implements the DB-Library interface, such as FreeTDS. This has been tested with FreeTDS, but not the proprietary implementations of DB-Library.

This should support PostgreSQL 9.2+.

The current version does not yet support JOIN push-down, or write operations.

It does support WHERE and column pushdowns when matchcolumnnames is enabled.

Build Status

| | centos7 | ubuntu20.04 | | --------------:|:-------------:|:------------:| | PostgreSQL 9.5 |Build Status|Build Status| | PostgreSQL 9.6 |Build Status|Build Status| | PostgreSQL 10 |Build Status|Build Status| | PostgreSQL 11 |Build Status|Build Status| | PostgreSQL 12 |Build Status|Build Status| | PostgreSQL 13 |Build Status|Build Status|

Installing on CentOS

See installing tds_fdw on CentOS.

Installing on Ubuntu

See installing tds_fdw on Ubuntu.

Installing on Debian

See installing tds_fdw on Debian.

Installing on openSUSE

See installing tds_fdw on openSUSE.

Installing on OSX

See installing tds_fdw on OSX.

Installing on Alpine (and Docker)

See installing tds_fdw on Alpine.


Foreign server

See creating a foreign server.

Foreign table

See creating a foreign table.

User mapping

See creating a user mapping.

Foreign schema

See importing a foreign schema.


See variables.


will show the query issued on the remote system.

Notes about character sets/encoding

  1. If you get an error like this with MS SQL Server when working with Unicode data:

NOTICE: DB-Library notice: Msg #: 4004, Msg state: 1, Msg: Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier., Server: PILLIUM\SQLEXPRESS, Process: , Line: 1, Level: 16
ERROR: DB-Library error: DB #: 4004, DB Msg: General SQL Server error: Check messages from the SQL Server, OS #: -1, OS Msg: (null), Level: 16

You may have to manually set tds version in freetds.conf to 7.0 or higher. See The freetds.conf File. and Choosing a TDS protocol version.

  1. Although many newer versions of the TDS protocol will only use USC-2 to communicate with the server, FreeTDS converts the UCS-2 to the client character set of your choice. To set the client character set, you can set client charset in freetds.conf. See The freetds.conf File and Localization and TDS 7.0.

Encrypted connections to MSSQL

It is handled by FreeTDS, so this needs to be configured at the

. Seee The freetds.conf File and at
freetds.conf settings
look for


If you find any bugs, or you would like to request enhancements, please submit your comments on the project's GitHub Issues page.

Additionally, I do subscribe to several PostgreSQL mailing lists including pgsql-general and pgsql-hackers. If tds_fdw is mentioned in an email sent to one of those lists, I typically see it.


See Debugging

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.