26

由于智能感知功能,我刚刚安装了 SQL Server Express 2008。它起初工作,但后来停止工作。寻找检查选项并稍后咨询 Google 我发现如果您连接到 SQL Server 2005 数据库,Microsoft 似乎禁用了智能感知。

这绝对正确吗?
有没有解决方案(一些注册表“开关”)?

4

13 回答 13

25

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

让我分享一下产品团队关于 IntelliSense 版本支持的信息。这是从 IntelliSense 项目开始时真正的设计,它是业务决策的一部分。IntelliSense 的实现需要使用托管代码库在客户端完全保真地重建引擎解析器。支持多个服务器版本意味着并行设计和实现多个版本的解析器和相关的基础设施。这会增加开发、测试和支持的时间和成本。同时,核心模块是一个重要的产品基础,不仅支持IntelliSense功能,还支持包括Upgrade Advisor在内的其他产品分析脚本;从长远来看,它可能是需要对 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(累积更新 1)版本,因为已经解决了很多 IntelliSense 错误。

于 2008-10-30T23:20:24.287 回答
16

此处添加到列表中的另一种免费工具是ApexSQL Complete。过去几个月我一直在使用它,我发现它比 SSMS 智能感知好一点,因为它提供了更多有用的工具提示。

一般来说,这里提到的任何工具都不会出错,尤其是当您准备为高级工具付费时。

于 2013-03-25T11:14:52.830 回答
12

Red-Gate 的 SQLPrompt 在所有版本(2000、2005 和 2008)以及在 VS 甚至一些文本编辑器中运行时都很好地完成了这项工作。

于 2008-10-30T23:14:32.257 回答
8

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

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

dbForge SQL Complete - 主视图

于 2010-12-01T16:34:57.263 回答
6

我不认为有办法解决这个问题(尽管我可能是错的),但这可能有助于你寻求真相;-)

看起来智能感知在 CTP 期间建议 2008 年前数据库的“不正确”语法,并在 RTM 中被删除。

于 2008-10-30T13:23:24.460 回答
2

我和一位同事都安装了 SQL Server Management Studio 2008,并且我们都连接到相同的 SQL Server 2005 和 2008 数据库。他在 2005 年和 2008 年都得到了智能感知。我只是在 2008 年得到它。我们无法弄清楚为什么会这样。

更正:原来我的同事以为他正在连接到 2005 服务器,但实际上是 2008 服务器。

结论:在咨询了我们的 DBA 之后,这似乎是不可能的。他们也对此进行了广泛的研究。

于 2008-10-30T23:02:01.500 回答
2

如果您安装了正确的版本,但仍然没有 Intellisense ,这可能会对您有所帮助。

1) 确保您已连接到 SQL Server 2008 Edition。IntelliSense 不适用于以前版本的 SQL Server。

2) 应启用 IntelliSense。有两种方法可以验证是否启用了 IntelliSense。a) 从工具栏 b) 转到工具 -> 选项 -> 文本编辑器 -> Transact-SQL -> IntelliSense

3) IntelliSense 应使用数据库中的最新更改进行刷新。
a) 按 CTRL+SHIFT+R b) 转到编辑 -> IntelliSense -> 刷新本地缓存

4) 转到工具 -> 选项 -> 文本编辑器 -> Transact-SQL -> 常规 -> IntelliSense 选择自动列表成员并检查参数信息。

于 2011-05-23T02:11:11.267 回答
1

SQL Server 2008 数据库引擎中有代码支持 Management Studio 2008 中的智能感知功能。

不,没有。你完全错了,应该用湿鱼打耳光。

它所做的只是询问各种 INFORMATION_SCHEMA 虚拟表以进行发现。他们针对以前的版本禁用它的原因是,理论上它可能会鼓励您使用仅对 2005 有效的语法,但很多人在使用它时取得了 100% 的成功。当然,他们禁用它的真正原因是它减少了将服务器升级到 2008 年的一个优势(这是他们真正赚钱的地方)。

于 2009-01-05T14:49:23.267 回答
1

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

你可以在这里找到它:

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

于 2009-07-01T22:40:13.223 回答
1

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

您仍然可以使用 Express Edition 获得所有基本功能,类似于 v. 1.0。

于 2011-01-26T16:22:19.777 回答
0

不要想太多,以至于他们在 SQL Server 2005 中禁用了智能感知,因为 SQL Server 2005 在构建时并没有考虑到智能感知支持。SQL Server 2008 数据库引擎中有代码支持 Management Studio 2008 中的智能感知功能。

是的,我知道它似乎在后来的 CTP 预览版中有效,但一些谷歌搜索(和 DilbertDave 的链接)显示有多种方式破坏了 CTP 行为。

于 2008-10-30T13:27:41.300 回答
0

只需使用 toad,比任何 Microsoft 工具都好。有一个免费软件版本。

蟾蜍软

于 2008-10-30T13:43:54.997 回答
0

我使用免费软件 Atlantis SQL Enywhere 已经快一年多了,对它印象深刻。适用于 SQL 2005 和 SQL 2008 版本。它的功能给我留下了深刻的印象,并且键盘快捷键与 VS 相似,因此可以非常顺利地过渡到新的编辑器。

一些值得一提的功能。

Intellisense 在使用多个表和使用别名连接时实际工作 使用多个表时的连接建议(减少键入时间,非常整洁) 丰富的 sql 代码格式,使用 Ctrl K、Ctrl D 的 AutoIndent。更好地表示 SQL 计划。使用时突出显示变量声明。鼠标悬停时的表定义。

所有这些功能为我节省了很多时间。

尚未在 SQL 2012 上检查这一点。

于 2013-10-23T18:30:45.183 回答