Tabular Data Stream
{{Infobox networking protocol
| title = Tabular Data Stream
| logo =
| logo alt =
| image =
| image alt =
| caption =
| is stack = no
| abbreviation = TDS
| purpose = Database
| developer = Sybase Inc., Microsoft
| date = {{Start date and age|1984}}
| influenced =
| osilayer = Application layer (7)
| ports = TCP/1433
| rfcs =
}}
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{{quantify|date=July 2017}} use.
The TDS protocol comes in several varieties, most of which had not been openly documented because they were regarded{{by whom|date=July 2017}} as proprietary technology. The exception was TDS 5.0, used exclusively by Sybase, for which documentation is available from Sybase.{{cite web | url = http://www.sybase.com/content/1040983/Sybase-tds38-102306.pdf | title = TDS 5.0 Functional Specification, Version 3.8 | accessdate = 2009-07-08}} This situation changed when Microsoft published the TDS specification in 2008,{{cite web | url = http://msdn.microsoft.com/en-us/library/dd304523.aspx | title = [MS-TDS]: Tabular Data Stream Protocol | accessdate = 2014-04-29}} as part of the Open Specification Promise.
The FreeTDS team has developed a free native-library implementation of the TDS protocol,{{cite book | title = SQL server security |author1= Chip Andrews |author2= David Litchfield |author3= Bill Grindlay | page = 260 | publisher = McGraw-Hill Professional | year = 2003 | isbn = 0-07-222515-7 }} licensed under the LGPL license. WireShark has a protocol decoder for TDS.[http://wiki.wireshark.org/Protocols/tds protocol/tds], Wireshark.org wiki
Oracle Corporation provides Oracle Net - software analogous to TDS.
{{cite web
|url= http://www.microsoft.com/rus/download.aspx?file=/SQL2008/white_papers/OracleSSIS.docx
|title= SQL Server Integration Services with Oracle Database 10g
|date= May 2008
|series= SQL Server Technical Article
|publisher= Microsoft
|page= 2
|access-date= 2017-07-20
|quote= Oracle Net is analogous to the SQL Server Tabular Data Stream (TDS) transport facility.
}}
See also
References
{{reflist}}
External links
- [https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-tds/b46a581a-39de-4745-b076-ec4dbb7d13ec [MS-TDS]: Tabular Data Stream Protocol] specification, Microsoft
- [http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00384.0202/html/amcug/CIHGCIAH.htm What is TDS?], sybase.com
- [http://www.freetds.org/ FreeTDS]
- [https://github.com/rails-sqlserver/tiny_tds TinyTDS], Ruby bindings to FreeTDS.
- [http://jtds.sourceforge.net jTDS], a pure-Java JDBC driver for TDS databases
- [http://jbcp.sourceforge.net jBCP], an extension of jTDS to include BCP protocols
- [http://www.freepatentsonline.com/7318075.html United States Patent 7318075: Enhanced tabular data stream protocol], Microsoft
- [http://www.wipo.int/pctdb/en/wo.jsp?WO=2008151016 Patent: TRANSPORTING TABLE VALUED PARAMETER OVER TABULAR DATA STREAM PROTOCOL], Microsoft
- [http://www.faqs.org/patents/app/20090112889 Patent application: COMPRESSING NULL COLUMNS IN ROWS OF THE TABULAR DATA STREAM PROTOCOL], Microsoft
- [https://gitlab.com/wireshark/wireshark/-/wikis/Protocols/tds WireShark wiki: Protocol tds]