SQL Server Management Studio 2008 Intellisense

26
我刚刚安装了SQL Server Express 2008,因为我需要使用智能感知功能。一开始这个功能是可用的,但后来就无法使用了。在寻找选项并咨询谷歌之后,我发现看起来如果连接到 SQL Server 2005 数据库,Microsoft 禁用了智能感知功能。

这个说法完全正确吗?
是否有解决方法(例如某些注册表“开关”)?

13个回答

25

如果您希望看到这个功能被添加,可以在Connect上投票请求。以下是团队关于为什么放弃此功能的反馈:

让我分享一下产品团队有关IntelliSense版本支持的信息。这是IntelliSense项目从一开始就设计的一个部分,并且这是商业决策的一部分。实现IntelliSense需要在客户端使用托管代码基础上对引擎解析器进行完全重建。支持多个服务器版本意味着需要并行设计和实现多个版本的解析器和相关基础设施。这将使开发、测试和支持所需的时间和成本倍增。与此同时,核心模块是一个重要的产品基础,不仅能够支持IntelliSense功能,还能支持其他产品,包括升级顾问来分析脚本;长期来看,它可能支持任何需要理解Transact-SQL语言的句法和语义的功能。

在CTP5和CTP6中,IntelliSense存在一个已知的问题,即它没有正确检查服务器版本,因此CTP用户可以连接任何版本的SQL Server并使用IntelliSense。虽然有些用户没有注意到这个问题,但是IntelliSense并没有按照预期的方式正确工作。结果是IntelliSense很有可能会引导用户编写不正确的Transact-SQL脚本,或者在那些版本中完全有效的情况下误报错误。

考虑到IntelliSense的首要目标是提高编写复杂查询、存储过程(或简单的Transact-SQL脚本)的生产力,这个问题被认为是降低生产力的一个因素,这对于一项新功能来说是巨大的负面影响。

在RC0中,修复了这个已知问题,IntelliSense检查服务器版本并提供其功能。

支持的版本是 SQL Server 2008。

作为第一版,IntelliSense 在 Transact-SQL 语言的子集上被启用。原因是实现管理代码中的词法分析器、解析器、绑定器和脚本文档对象模型来支持整个语言范围需要大量工作。产品团队正在前进,重点是扩大语言支持范围。

我希望这些信息至少提供了有关为什么只选择了 SQL Server 2008 的目标版本的背景信息。

使用 RTM 构建的任何人都应该考虑使用 此处 提供的 CU1 (Cumulative Update 1) 构建版本,因为已经解决了相当多的 IntelliSense Bug。


现在它被标记为“按设计关闭”!:( - Sandeep Kumar M

16

这里要添加另一个免费工具:ApexSQL Complete。我已经使用它几个月了,发现它比SSMS IntelliSense更好,因为它提供了更有用的工具提示。

一般来说,这里提到的任何工具都不会错,尤其是如果你准备付费购买高级工具。


对我来说效果还不错!唯一的问题是它有点占用资源,有时会导致SSMS卡住。可能是因为我的VPN或者机器的原因。不过我还是会继续使用它! - JoeFletch

12

Red-Gate的SQLPrompt做得非常好,适用于所有版本(2000、2005和2008),并且可以在VS内部甚至一些文本编辑器中运行。


8

确实,SSMS中的智能感知仅适用于SQL Server 2008。

最近我们发布了一个自动完成工具——dbForge SQL Complete,它为SQL Server 2008、2005和2000提供SQL自动完成和格式化功能。

dbForge SQL Complete - main view


6
我不认为有绕过这个问题的方法(虽然我可能错了),但this也许能帮助你追寻真相;-)
看起来Intellisense在CTP期间建议使用针对2008年之前的数据库的“不正确”语法,并在RTM中将其删除。

我更新了我的答案,并加入了来自微软的“root”链接。 - DilbertDave

2
如果您已经安装了正确的版本,但仍然没有智能感知功能,那么这篇文章可能会对您有所帮助。
1)确保您已连接到 SQL Server 2008 版本。 IntelliSense 不适用于之前的 SQL Server 版本。
2)应启用 IntelliSense。有两种方法可以验证 IntelliSense 是否已启用。a)从工具栏 b)转到“工具”->“选项”->“文本编辑器”->“Transact-SQL”->“IntelliSense”。
3)需要使用最新的数据库更改刷新 IntelliSense。
a)按下 CTRL+SHIFT+R b)转到“编辑”->“IntelliSense”->“刷新本地缓存”
4)转到“工具”->“选项”->“文本编辑器”->“Transact-SQL”->“常规”->“IntelliSense”,选择“自动列出成员”并勾选“参数信息”。

感谢您指出需要刷新本地缓存的问题,我之前一直很困惑为什么会出现红色波浪线。 - SteveC

2
我和我的同事都安装了SQL Server Management Studio 2008,并连接到相同的SQL Server 2005和2008数据库。他可以同时获取2005和2008的智能感知,而我只能获取2008的。我们无法确定原因。
更正:事实证明,我的同事认为他连接的是一个2005服务器,但实际上是一个2008服务器。
结论:在与我们的数据库管理员咨询后,似乎不可能实现。他们也进行了广泛的研究。

1

顺便提一下,我们最近发布了一个新版本的SQL Complete,提供了一堆新功能。所有新功能都可以在共享软件标准版中使用(30天免费试用,49.95美元)。

您仍然可以通过Express Edition获得与v. 1.0类似的所有基本功能。


1
SQL Server 2008数据库引擎中有支持Management Studio 2008智能感知功能的代码。
不,没有。你完全错了,应该被用湿鱼拍打一下。
它所做的只是查询各种INFORMATION_SCHEMA虚拟表以进行发现。他们禁用它对先前版本的支持是因为理论上它可能会鼓励您使用仅针对2005有效的语法,但许多人都在100%成功地使用它。当然,他们禁用它的真正原因是它减少了升级服务器到2008的一个优势(这是他们赚取真正利润的地方)。

4
根据Connect上的讨论,他们在客户端复制了服务器端的解析引擎。你引用的评论实际上大部分是正确的。 - Rick

1

您可以在DbOctopus中使用智能感知 - 它也适用于SQL Server 2005和2000。目前它是免费的,但只到2009年9月1日。

您可以在这里找到它:

http://www.cogin.com/dboctopus/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接