可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I just installed SQL Server Express 2008 because of intellisense feature. It worked at first but than it stopped working. Looking for the option to check and later consulting Google I have found that it looks like Microsoft disabled intellisense if you connect to SQL Server 2005 databases.
Is this absolutely correct ?
Is there any solution for this (some registry "switch") ?
回答1:
If you'd like to see the feature added, vote for the request on Connect. Here is feedback from the team regarding why it was dropped:
Let me share product team’s
information about the version support
of IntelliSense. This was a truly
by-design from the beginning of
IntelliSense project and it was a part
of business decision. Implementation
of IntelliSense requires a full
fidelity of engine parser
reconstruction in client side using
managed code base. Support of multiple
server versions means design and
implementation of multiple versions of
parsers and related infra in parallel.
This multiplies time and cost to
develop, test and support. At the same
time, the core module is an important
product base that enables not only
IntelliSense feature but also other
products including Upgrade Advisor to
analyze scripts; in the long term, it
is potentially any feature that needs
syntactic and semantic understanding
of Transact-SQL language.
In CTP5 and CTP6, IntelliSense had a
known issue that it did not correctly
check the server version so CTP users
could connect any version of SQL
Server with IntelliSense. While some
users didn't notice it, IntelliSense
was not correctly working as desired.
The impact was that IntelliSense had a
high potential to guide users to
script incorrect Transact-SQL or to
false-negatively indicate that a
script has errors while it is
perfectly valid in those versions.
Considering the number one goal of
IntelliSense is to increase
productivity of authoring complex
query or stored procedure (or simply
Transact-SQL scripts), this issue was
regarded as a factor to decrease
productivity which is a huge negative
impact from a new feature.
In RC0, this known issue was corrected
that IntelliSense checks the server
version and provides its feature on
supported version which is SQL Server
2008.
As a version one, IntelliSense is
enabled on a subset of Transact-SQL
language. It is because the large
scope of work to implement lexer,
parser, binder and script document
object model in managed code for
entire language scope. The product
team is moving forward with a focus on
expanding the language support scope.
I hope this information provides the
background information at minimum why
the target version was selected on SQL
Server 2008 only.
Anyone using the RTM build should consider the CU1 (Cumulative Update 1) build available here as quite a few IntelliSense bugs were addressed.
回答2:
One more free tool to add to the list here is ApexSQL Complete . I’ve been using it for the last several months and I find it a bit better than SSMS intellisense because it provides more helpful tooltips.
Generally, you can’t go wrong with any of the tools mentioned here, especially if you’re ready to pay for premium tools.
回答3:
SQLPrompt by Red-Gate does the job quite nicely, across all versions (2000, 2005 and 2008), as well as operating inside VS and even some text editors.
回答4:
It's true that intellisense in SSMS works for SQL Server 2008 only.
Recently we have released an autocomplete tool for SSMS - dbForge SQL Complete, that provides SQL autocomplete and formatting functionality for SQL Server 2008, 2005 and 2000.
回答5:
I don;t think that there is a way around this (although I could be wrong) but this may help in your quest for the truth ;-)
Looks like intellisense was suggesting 'incorrect' syntax for pre-2008 databases during CTP and was removed in the RTM.
回答6:
A co-worker and I have both installed SQL Server Management Studio 2008 and we both connect to the same SQL Server 2005 and 2008 databases. He gets intellisense for both 2005 and 2008. I just get it for 2008. We cannot work out why this is.
CORRECTION: Turns out that my co-worker thought that he was connecting to a 2005 server but it was in fact a 2008 server.
Conclusion: After consulting with our DBA's it does not appear to be possible. They've also done extensive research on this.
回答7:
If you have installed correct version and if you still haven't Intellisense this may help you.
1) Make sure you are connected to SQL Server 2008 Edition.
IntelliSense does not work with the previous versions of SQL Server.
2) IntelliSense should be enabled. There are two ways to verify
whether IntelliSense is enabled or not. a) From Toolbar b) Go to Tools
-> Options -> Text Editor -> Transact-SQL -> IntelliSense
3) IntelliSense should be refreshed with the latest changes in
database.
a) Press CTRL+SHIFT+R
b) Go to Edit -> IntelliSense -> Refresh Local Cache
4) Go to Tools -> Options -> Text Editor -> Transact-SQL -> General ->
IntelliSense Select Auto List Members and Check Parameter Information.
回答8:
there is code in the SQL Server 2008 database engine that supports the intellisense feature in Management Studio 2008.
No there isn't. You're entirely wrong, and should be slapped with a wet fish.
All it is doing is interrogating the various INFORMATION_SCHEMA virtual tables to do discovery. The reason they disabled it against prior versions is that theoretically it might encourage you to use a syntax that is only valid against 2005, but lots of people were using it with 100% success. Of course the real reason they disabled it is that it reduced one advantage of upgrading your servers to 2008 (which is where they make the real money).
回答9:
You can use intellisense in DbOctopus - works with SQL Server 2005 and 2000 too. It's currently free, but only until 1st September 2009.
You can find it here:
http://www.cogin.com/dboctopus/
回答10:
By the way, recently we have released a new version of SQL Complete that offers a bunch of new features. All new features are available in shareware Standard Edition (30-days free trial, $49.95).
You still can get all basic functionality, similar to v. 1.0, with Express Edition.
回答11:
Don't think of it so much that they disabled intellisense in SQL Server 2005 so much as that SQL Server 2005 wasn't built with intellisense support in mind; there is code in the SQL Server 2008 database engine that supports the intellisense feature in Management Studio 2008.
Yes, I know it seemed to work in the later CTP previews, but some googling (and DilbertDave's link) reveals that there were a number of ways in which the CTP behavior was broken.
回答12:
Just use toad, waaaaay better than any Microsoft tool. There's a freeware version.
Toad Soft
回答13:
I have been using Atlantis SQL Enywhere, a free software, for almost more than an year now and have been really impressed with it. Works with SQL 2005 and SQL 2008 versions. I am really impressed with its features and keyboard shortcuts are similar to VS, so makes the transition really smooth to a new editor.
Some of the features that are worth mentioning.
Intellisense that actually works when using multiple tables and joins with aliases Suggestion of joins when using multiple tables (reduces time on typing, really neat) Rich formatting of sql code, AutoIndent using Ctrl K, Ctrl D. Better representation of SQL plans. Highlights variables declarations while they are used. Table definition on mouse hover.
All these features have saved me lot of time.
Have not checked this on SQL 2012 yet.