Tabular Data Stream
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.
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 came up with a solution through 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. Unlike SQL, it provides a proprietary but much faster protocol for loading data into a database table.
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 is officially deprecated but still in widespread use.
The TDS protocol comes in several varieties, most of which had not been openly documented because they were considered to be proprietary technology. The exception was TDS 5.0, used exclusively by Sybase, for which documentation is available from Sybase. This state changed when Microsoft published the TDS specification in 2008, as part of the Open Specification Promise.
- "TDS 5.0 Functional Specification, Version 3.8" (PDF). Retrieved 2009-07-08.
- "[MS-TDS]: Tabular Data Stream Protocol". Retrieved 2014-04-29.
- Chip Andrews, David Litchfield, Bill Grindlay (2003). SQL server security. McGraw-Hill Professional. p. 260. ISBN 0-07-222515-7.
- protocol/tds, Wireshark.org wiki
- Microsoft Developer Network, Tabular Data Stream Protocol Specification
- What is TDS?, sybase.com
- 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