There are lots of variations on this myth that I have heard/read over the years, most amusing of which is probably “Microsoft has not had time to mess up the Sybase code it bought yet so SQL Server is still a pretty solid product”
Lets start with a history lesson, you can read a much more in depth (and insightful) version of this in the book Inside SQL Server by Microsoft Press (at this time I can only check the 7.0 and 2000 versions) or any of the historical posts/articles by Hal Berenson (former Architect, PUM and GM of SQL Server during 6.5/7.0/2000).
In 1987 Microsoft and Sybase started a partnership to build/sell a Database Management System, based on the then (yet to be released) Sybase DataServer product. Sybase would have the rights to the product on the Unix/Mini Platform and Microsoft would have the rights on the fledgling OS2, and any other OS developed by Microsoft.
At the time the leader in the “PC” database systems (non mainframe/mini/UNIX) was a product from Ashton Tate called dBase (my first database app was written using dBase III+ on DOS 3.3). To help leverage the large dBase installed base and to give Ashton Tate a true Client Server offering, Microsoft and Ashton Tate with help from Sybase announced Ashton-Tate/Microsoft SQL Server (Sybase later renamed their product to Sybase SQL Server for UNIX and VMS), this was to be the name of the OS/2
V1 of Ashton-Tate/Microsoft SQL Server was shipped in 1989. Originally dBase IV was supposed to have provided a dev tool/front end for SQL Server (hence the original partnership) but the problems with dBase IV after its release later in the year led to this falling by the wayside. At this point the partnership between Microsoft and Ashton Tate was dissolved and the product became Microsoft SQL Server (there are still a few members of the dev team that were around in the original days and proudly have their Ashton-Tate/Microsoft SQL Server boxes in their offices).
Microsoft continued the evolution of SQL Server, adding support for Windows via SQL Server 1.1 in 1990, although almost all the work was still done by Sybase with Microsoft doing testing, project management and some minor development. Over the course of 1991 the Microsoft team was given read and then read/write access to the code to allow bug fixes to be made. The first real “partnership” release followed in 1992 and synched the Sybase 4.0 code into the OS/2 product, this was released as 4.2 and included significant code from MS as well as Sybase for the first time.
Things started to heat up just after this release, Microsoft had been working on a 32 bit version of SQL Server and Sybase was working on what would become System 10. At this point OS/2 was becoming less viable as a platform and Microsoft already had beta versions of Windows NT that was 32 bit only, available. So the SQL Server team decided to build on the stable 4.2 code for its port to NT while Sybase continued with the new System 10 code base. Now “port” really is the wrong word to use here, NT offered lots of opportunities to make a better product by using features of the OS, the clincher was the ability to run on SMP systems by using the support provided by the OS, rather than having to write it into the database code, which is what the team did, leading to the code from the 4.2 for OS/2 and the SQL Server for NT, or SQL NT(side note, sqlnt was the internal mail alias used for development communications, the alias still exists today and continues to have members of the dev team, support team, documentation and courseware teams on it) to be VERY different.
By this time the value of the partnership between Microsoft and Sybase was beginning to reduce, as Sybase wanted to remain platform neutral, and Microsoft wanted to fully commit to the NT platform and only the NT platform. In addition, because of the restrictive nature of the Microsoft/Sybase agreement, Microsoft could not truly add new features without Sybase’s approval. In 1994 the partnership was dissolved and Sybase was allowed to sell its product for the first time on OS/2 and Windows and Microsoft could take the code in any direction it wanted. Microsoft did indeed take the product in its own direction, building on the SQL Server for NT code base and releasing SQL Server 6.0 and 6.5 within 18 months, these releases involved rewriting existing code and adding new code. At this point in time SQL Server was a success in its own right with the code (and features) significantly different from the original Sybase code of the 4.2 for OS/2 version.
During this window Microsoft decided to go “big” on the data management front, part of doing that meant building a stronger, bigger team and while the org had grown from the 1 corridor it occupied in the very early days, more needed to be done. Microsoft went out and hired some of the best and most experienced people in the database industry(
The goals for Sphinx were clear, set a new standard in ease of use for complete management of data, to do so meant building a new platform that could be extended in years to come, learning the lessons of the previous releases of SQL Server and other database platforms. To do this required a complete rewrite of the Database Engine, a new Query Processor, a new Storage Engine and a new set of Data Access APIs (OLE DB and
While SQL Server had made its name as a relational database management system, with SQL Server 7.0 Microsoft wanted to provide a complete data solution, this meant adding support for OLAP via OLAP Services (the code was based on an acquisition of “Plato” from Panorama in Israel), ETL/Data Integration via DTS (the code was developed in house by the Starfighter/Tools team).
SQL Server 7.0 RTM’d in Nov of 1998 (I was in
Obviously the march of SQL Server did not stop with SQL Server 7.0, SQL Server 2000 followed in Aug of 2000, major work included multi-instance and a new clustering implementation (this was all homegrown code), Data Mining(this was an early delivery of an ongoing research project in MSR), SQLXML (this was another side project, this time from the MDAC and Internet and Interfaces teams).
Post SQL Server 2000 probably the biggest impact feature before SQL Server 2005 was Reporting Services, in SQL Sever 2000 this was all homegrown code, the team that built it was a merger of the old Repository/Meta Data Services team, with some of the English Query team and a group of new folks.
The list of major new work and code in the SQL Server 2005 release is worthy of a series of blog entries all by itself but the highlights for me would be SQLCLR (this was the integration of another long term strategy project), XML support (this came out of an investigation we did to see if the best way to store XML was a dedicated XML database or to integrate XML into SQL Server, we did the latter and this required a lot of QP and language changes to support XQuery), Service Broker (this was another side project that we decided to integrate after Dave Campbell spent time looking into messaging/queuing/SOA with our MSMQ team in Israel), Integration Services (this is all ground up code, we formed a new team built on the original members of the DTS team, adding in some folks from the C++, hardware, AS and COM+ teams, combined with a small acquisition to build out the design and execution environments) and Report Builder (this is based on a concept and architecture from an acquisition but the code is new).
Dave Campbell was talking the other day about some of the aspects of his more than 10 years in SQL Server, there are still folks in the team that have been here longer than him and yet almost all of the 1000 people who now work on SQL Server (caveat, this includes the MDAC, System.Data, System.XML and WinFS teams) have never seen a line of code that was written by anyone other than an MS employee.
Conclusion: Myth BUSTED!
Update: Kalen has made the history chapter available by itself as its no longer in the Inside SQL Server Books, get it here
Update: We found a bunch of the old boxes in the SQL Team Trophy Cabinet, you can find them here