Backward compatibility for IntelliSense please
I had an interesting email thread on Friday with Eric Kang, a Program Manager in the SQL Server team, about the IntelliSense feature in SQL 2008. Eric has been gracious enough to let me post the contents of this thread here.
The conversation related to what I felt was misinformation in various places about whether or not IntelliSense would be backward compatible. Currently, CTP6 will support IntelliSense against a SQL 2005 or SQL 2000 instance. This was exciting to me as I tend to work in multiple revs of the product. As it turns out, the RTM version of SQL 2008 WILL NOT support this behavior. Here is Eric's statement to why that is the case:
CTP5 and CTP6 IntellliSense did not properly check the server version but allowed itself working on SQL Server 2005 (or any downlevel version).
Unfortunately, it was a known defect since core modules were designed explicitly for SQL Server 2008 and later versions. #1 goal of IntelliSense is to help users authoring Transact-SQL script more efficiently so that increase the productivity. However, IntelliSense could cause negative impact on 2005 or any unsupported versions by incorrectly suggesting syntax error or suggest things that won't actually execute. This case, users will spend more time to figure out the truth.
Although IntelliSense provides an application level feature, the underlying implementation is similar to rebuilding the server side lexer, parser binder in managed code base. The scale of project is more likely catching up the full scope of what SQL Server has implemented for many years. Adding support for downlevel version would multiply this scope of work.
Our team envisioned to invent a client side framework and platform that understand syntactic and semantic context of Transact-SQL script that enable many *intelliengent* applications and tools. In SQL Server 2008, IntelliSense and Upgrade Advisor are good examples. By doing so, not only Microsoft product but also Microsoft partners and vendor could take advantage of it in the future and provide such intelligent applications to customers overall.
As a part of the roadmap, the business decision was first to enable core Transact-SQL language constructs such as query and DML statement for SQL Server 2008. We still have a long way to go to accomplish our vision but we are getting there and team has multiple project charters to enable more language coverage in versions to come.
Hope this helps understand the reason why we had to restrict the version support to SQL Server 2008 only.
While I appreciate Eric's description and understand his reasoning, I'm still disappointed. I had been using the 2008 tools against two client's SQL 2005 instances with great results. Giving this up will be painful as I have really enjoyed the experience of IntelliSense in SSMS.
If you agree with me on this point please go to Connect and vote for my suggestion that backward compatibility be included in the feature. Hopefully this could find it's way into a service pack or other release.
I want to thank Eric again for letting me post part of our conversation. Eric's job of implementing IntelliSense in SQL Server is no small task. I am happy to see this feature make the product, it already has a better feel than many of the other add-ins on the market.