| Communication protocol | |
| Abbreviation | TDS |
|---|---|
| Purpose | Database |
| Developer(s) | Sybase Inc., Microsoft |
| Introduction | 1984 (1984) |
| OSI layer | Application layer (7) |
| Port(s) | TCP/1433 |
Tabular Data Stream (TDS) is an application layer protocol used to transfer data between a database server and a client. It was initially designed and developed by Sybase Inc. for their Sybase SQL Server relational database engine in 1984, and later by Microsoft in Microsoft SQL Server.
History
During the early development of Sybase SQL Server, the developers at Sybase perceived the lack of a commonly accepted application level protocol to transfer data between a database server and its client. In order to encourage the use of its products, Sybase promoted the use of a flexible pair of libraries, called netlib and db-lib, to implement standard SQL. A further library was included in order to implement "Bulk Copy" called blk. While netlib's job is to ferry data between the two computers through the underlying network protocol, db-lib provides an API to the client program, and communicates with the server via netlib. db-lib sends to the server a structured stream of bytes meant for tables of data, hence a Tabular Data Stream. blk provides, like db-lib, an API to the client programs and communicates with the server via netlib.
In 1990 Sybase entered into a technology-sharing agreement with Microsoft which resulted in Microsoft marketing its own SQL Server — Microsoft SQL Server — based on Sybase's code. Microsoft kept the db-lib API and added ODBC (Microsoft has since added additional APIs). At about the same time, Sybase introduced a more powerful successor to db-lib, called ct-lib, and called the pair Open Client. db-lib, though officially deprecated, remains in widespread use.
The TDS protocol comes in several versions, most of which had not been openly documented. This situation changed when Microsoft published the TDS specification in 2008,1 as part of the Open Specification Promise.
TDS has both client and server implementations beyond Microsoft SQL Server and Sybase. The FreeTDS provides a free native-library client implementation of the TDS protocol, licensed under the GPL-2.0 license2. Wireshark has a protocol decoder for TDS.3 CData and Invantive provide server implementations of the TDS protocol, bridging TDS to other data platforms than SQL Server.45
Protocol versions
Microsoft SQL Server has used several revisions of the Tabular Data Stream (TDS) protocol. Microsoft's MS-TDS specification maps TDS 7.1 to SQL Server 2000, TDS 7.2 to SQL Server 2005, TDS 7.3.A to SQL Server 2008, TDS 7.3.B to SQL Server 2008 R2, TDS 7.4 to SQL Server 2012 and later, and TDS 8.0 to SQL Server 2022 and later.6
| TDS version | Associated Microsoft SQL Server release(s) | Notable additions |
|---|---|---|
| 7.1 | SQL Server 2000 | Support for bigint (64-bit integer) and sql_variant.7 |
| 7.2 | SQL Server 2005 | Support for long text types such as varchar(max), varbinary(max) and nvarchar(max); this generation also introduced XML support and Multiple Active Result Sets (MARS).8 |
| 7.3A | SQL Server 2008 | Support for extended date and time types such as date, time, datetime2 and datetimeoffset.9 |
| 7.3B | SQL Server 2008 R2 | Revision of the 7.3 protocol used by SQL Server 2008 R2.10 |
| 7.4 | SQL Server 2012, 2014, 2016, 2017, 2019, 2022 and 2025 | Support for session recovery and feature-extension acknowledgements.11 |
| 8.0 | SQL Server 2022 and 2025 | Mandatory encryption on all messages instead of only row data and login messages as with previous versions.12 |
TDS 4.2, associated with older Sybase and Microsoft products, and TDS 5.0, used by Sybase, are distinct from the later Microsoft-specific TDS 7.x and 8.0 lines.
Similar Protocols
Oracle Corporation provides Oracle Net - software analogous to TDS.13
References
References
- "[MS-TDS]: Tabular Data Stream Protocol". Retrieved 2014-04-29.
- [1], FreeTDS website
- [2], Wireshark.org wiki
- [3], CData Linked Server
- [4], Invantive UniversalSQL Server
- "[MS-TDS]: Appendix A: Product Behavior". Microsoft Learn. Retrieved 2026-04-22.
- "FreeTDS User Guide: Versions of the TDS protocol". GitHub. Retrieved 2026-04-22.
- "[MS-TDS]: Partially Length-Prefixed Data Types". Microsoft Learn. Retrieved 2026-04-22.
- "[MS-TDS]: Variable-Length Data Types". Microsoft Learn. Retrieved 2026-04-22.
- "[MS-TDS]: Appendix A: Product Behavior". Microsoft Learn. Retrieved 2026-04-22.
- "[MS-TDS]: FEATUREEXTACK". Microsoft Learn. Retrieved 2026-04-22.
- "TDS 8.0 - SQL Server". Microsoft Learn. Retrieved 2026-04-22.
- "Oracle Net Services". Oracle. Retrieved 2026-04-22.
External links
External links
- [MS-TDS]: Tabular Data Stream Protocol specification, Microsoft
- What is TDS?, sybase.com
- FreeTDS
- TinyTDS, Ruby bindings to FreeTDS.
- jTDS, a pure-Java JDBC driver for TDS databases
- jBCP, an extension of jTDS to include BCP protocols
- United States Patent 7318075: Enhanced tabular data stream protocol, Microsoft
- Patent: TRANSPORTING TABLE VALUED PARAMETER OVER TABULAR DATA STREAM PROTOCOL, Microsoft
- Patent application: COMPRESSING NULL COLUMNS IN ROWS OF THE TABULAR DATA STREAM PROTOCOL, Microsoft
- WireShark wiki: Protocol tds