在某些情况下,IntelliSense 选项可能无法按预期进行工作。
联机和脱机可用性
只有在特定条件下,才能在 Transact-SQL 编辑器中使用 IntelliSense“列出成员”、“完成单词”、“参数信息”和“快速信息”功能。有关这些功能的更多信息,请参见 Transact-SQL IntelliSense 概述。
确定这些功能的可用性的主要因素有两个:
**到 SQL Server 实例的连接:**当连接到 SQL Server 实例时,可以使用 IntelliSense。在这种情况下,IntelliSense 元数据派生自连接,即使所编辑的文件与数据库项目关联也是如此。
**与数据库项目的关联:**当使用 Transact-SQL 编辑器编辑的文件与数据库项目关联时,可以使用 IntelliSense。在这种情况下,如果没有连接到 SQL Server 实例,则 IntelliSense 元数据派生自与项目关联的数据库对象。
下表说明这些因素如何影响以下功能的可用性:“列出成员”、“完成单词”、“参数信息”和“快速信息”。
是否连接到 SQL Server 实例? |
是否与数据库项目关联? |
是否可用 |
说明 |
---|---|---|---|
是 |
是 |
是 |
基于连接的 IntelliSense |
是 |
否 |
是 |
基于连接的 IntelliSense |
否 |
是 |
是 |
基于项目的 IntelliSense |
否 |
否 |
否 |
当 Transact-SQL 编辑器连接到某个 SQL Server 实例时,IntelliSense 可用并显示与该数据库连接关联的对象。当 Transact-SQL 编辑器未连接到 SQL Server 实例时,IntelliSense 信息来自与数据库项目关联的对象。如果 Transact-SQL 编辑器既没有连接到 SQL Server 实例,又不与数据库项目关联,则 IntelliSense 不可用。
IntelliSense 分析功能和 Transact-SQL 代码段功能始终可用,即使编辑器未与项目关联或连接到 SQL Server 实例也是如此。
影响 IntelliSense 的其他情况
以下情况可能会影响 IntelliSense 的行为:
游标上方出现一个代码错误。
如果在插入点上方有不完整的语句或其他代码错误,IntelliSense 可能无法分析代码元素,因此不会起作用。您可以注释掉相应的代码,以再次启用 IntelliSense。
插入点在代码注释内。
如果插入点在源文件中的注释内,则 IntelliSense 选项不可用。
插入点在字符串文字内。
如果插入点在字符串周围的引号内,则 IntelliSense 选项不可用,例如:
WHERE FirstName LIKE 'Patri%|'
该功能已关闭。
默认情况下,许多 IntelliSense 功能都会自动工作,但您可以禁用任何功能。
即使是禁用“完成单词”功能时,您也可以使用其他 IntelliSense 功能。有关更多信息,请参见Modifying IntelliSense Options。
Transact-SQL 编辑器注意事项
Transact-SQL 编辑器会出现以下问题:
Transact-SQL 编辑器的 IntelliSense 功能不支持所有 Transact-SQL 语法元素。参数帮助不支持某些对象(例如扩展存储过程)中的参数。有关更多信息,请参见 IntelliSense 支持的 Transact-SQL 语法。
连接到 SQL Server 2008 之前的 SQL Server 数据库引擎 版本中时,IntelliSense 在 Transact-SQL 编辑器中不可用。
当 Transact-SQL 编辑器未与项目关联且 Transact-SQL 编辑器未连接到数据库引擎时,IntelliSense 在 Transact-SQL 编辑器中不可用。
当 SQLCMD 模式设置为开启时,IntelliSense 会在 Transact-SQL 编辑器中关闭。
IntelliSense 功能不适用于在您的编辑器窗口连接到数据库后由其他连接创建的数据库对象。可以选择下面三种机制中的一种来刷新编辑器窗口的对象缓存:
当连接到 SQL Server 实例时,如果您或其他用户在 Transact-SQL 编辑会话过程中对该实例执行 CREATE、ALTER 或 DROP 命令,则 IntelliSense 缓存将不反映所进行的更改。若要更新 IntelliSense 缓存,请选择**“编辑”菜单,选择“IntelliSense”,然后选择“刷新本地缓存”**。
使用键盘快捷键 Ctrl+K 加 Ctrl+R。
完成列表不包含您对其没有权限的数据库对象。IntelliSense 标志会引用您确实拥有其权限的对象。例如,如果您打开了由他人编写的脚本,则对该人拥有权限而您没有权限的对象的任何引用都会被标记为不正确。
如果失去了与 SQL Server 实例的连接,完成列表可能会停止工作。请重新连接到该实例。