intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 或更高版本

时间:2024-05-30 22:09:05

intellisense

什么是IntelliSense? (What is IntelliSense?)

SQL Server Management Studio的IntelliSense是SQL 2008首次引入的一种智能代码完成机制,无需离开编辑器即可通过使用代码片段,定义和语法检查来提高开发效率。 IntelliSense默认情况下处于启用状态,但可以通过转到工具➜选项➜文本编辑器➜Transact SQL➜IntelliSense来禁用。
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本

IntelliSense功能 (IntelliSense Functions)

如下面的屏幕截图所示,IntelliSense具有几个主要功能。
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本

列出成员 (List Members)

按CTRL + J将调出对所键入的特定关键字有效的所有成员的列表。 在下面的示例中,列表显示了可以在关键字EXEC之后使用的所有有效成员。
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本

参数信息 (Parameter Info)

参数信息列出了功能或存储过程所需的参数。 在存储过程的名称或括号“(”之后输入一个空格会**IntelliSense的parameter info选项。ParameterInfo不仅提供所需参数的名称,还提供其数据类型以及将使用的默认值如果省略该参数,则需要提供的下一个参数将以粗体显示。
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本

快速资讯 (Quick Info)

只要IntelliSense支持语法,“快速信息”就会显示一个工具提示,其中包含您要悬停的项目的声明。
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本

分隔符匹配 (Delimiter Matching)

现在,IntelliSense可以匹配控制流元素的开始和结束对,例如BEGIN和END。 当您有多个嵌套的定界符时,这非常方便。 当您键入BEGIN和END的最后一个字母时,匹配的BEGIN和END将突出显示。 不幸的是,当您再次将光标放在其上时,它不会再次突出显示它。 为了在移至另一行代码后再次看到突出显示,必须删除一个字母,然后在BEGIN或END标记中重新输入该字母。 定界符匹配适用于:
  • Parenthesis

    插入语
  • BEGIN … END

    开始...结束
  • BEGIN TRY … END TRY

    开始尝试…结束尝试
  • BEGIN CATCH … END CATCH

    开始观看…结束观看

代码段 (Code Snippets)

代码段使您可以快速将常用的代码段输入到编辑器中。 如果在编辑器中右键单击,将看到两个相关的菜单选项:
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本
Insert Snippet… 插入代码段… Clicking on Insert Snippet will display a drop down with possible objects to choose from. 单击“插入片段”将显示一个下拉列表,其中包含可能要选择的对象。
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本
Surround With… 环绕… Surround With… helps you create code blocks, through the addition of BEGIN … END, IF or WHILE. 环绕…通过添加BEGIN…END,IF或WHILE帮助您创建代码块。
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本

解决IntelliSense常见问题 (Troubleshooting Common Problems with IntelliSense)

IntelliSense不起作用 (IntelliSense does not work)

发生这种情况的原因有两个。
  1. Firstly check if IntelliSense is enabled as explained earlier in the article. Also ensure that the Statement Completions settings are correct.

    首先,如本文前面所述,检查是否启用了IntelliSense。 另外,请确保“语句完成”设置正确。
  2. Ensure that there is no syntax error anywhere on the page before your cursor, resolving the code error should re-activate IntelliSense.

    确保光标之前页面上的任何地方都没有语法错误,解决该代码错误应重新**IntelliSense。
  3. IntelliSense does not work inside comments, uncomment the section to be able to get the suggestions.

    IntelliSense在注释内部不起作用,请取消注释该部分以获取建议。
  4. IntelliSense does not work inside a quotes. Be sure to place your cursor outside of any quotes.

    IntelliSense在引号内不起作用。 确保将光标放在任何引号之外。
  5. Ensure that you are connected to a SQL Server Instance or a database project.

    确保您已连接到SQL Server实例或数据库项目。
  6. IntelliSense is only supported on SQL Server 2008 and higher.

    仅在SQL Server 2008和更高版本上才支持IntelliSense。
  7. IntelliSense does not work for encrypted objects.

    IntelliSense不适用于加密对象。
  8. Not all syntax is supported. Have a look here to see if your syntax is supported.

    并非所有语法都受支持。 在这里看看是否支持您的语法。
  9. Are you running in SQLCMD mode? Unfortunately IntelliSense is not supported in command mode. Return to regular mode to get IntelliSense.

    您是否以SQLCMD模式运行? 不幸的是,命令模式不支持IntelliSense。 返回常规模式以获取IntelliSense。
  10. IntelliSense is currently not supported for SQL Azure.

    SQL Azure当前不支持IntelliSense。

并非所有对象都出现在列表中 (Not all objects appear in the List)

将新对象添加到数据库后,需要刷新IntelliSense缓存。 这可以通过按CTRL + SHIFT + R或单击菜单项“编辑➜智能感知➜刷新本地缓存”来完成。 IntelliSense不会向您显示您没有权限的任何对象。 确保您确实具有查看丢失的对象的权限。

IntelliSense仅在脚本的开头起作用 (IntelliSense only works at the beginning of my script)

有时看起来好像IntelliSense停止在页面上继续工作。 这可能是因为您的语法错误更高,也可能是因为您超出了最大脚本大小。 您可以通过转到工具➜选项➜文本编辑器➜Transact-SQL➜IntelliSense将最大脚本大小设置为无限制。
intellisense_使用和疑难解答SQL Server IntelliSense –适用于SQL Server 2012或更高版本

IntelliSense表现有趣 (IntelliSense behaves funny)

IntelliSense具有两种完成模式。 您可以键入SPACE以将列表中的选定成员添加到您的代码中,或者您需要使用TAB。 可以通过菜单项“编辑➜智能感知➜切换完成模式”或按CTRL + ALT + SPACE来切换此行为。 不幸的是,选定的完成模式并非始终存在,您可能必须为每个查询窗口进行设置。 Microsoft报告该错误已修复,但据我所知,SQL 2014中仍存在该错误。

IntelliSense没有选择我的同义词 (IntelliSense is not picking up my synonyms)

在SQL Server 2008中,IntelliSense无法识别同义词。 这已在SQL 2012中修复。

VS 2010 SP1安装后,IntelliSense for SQL 2008 R2停止工作 (IntelliSense for SQL 2008 R2 stops working after VS 2010 SP1 install)

如果您安装了Visual Studio 2010 SP1,并且正在使用SQL Server 2008 R2,则您的IntelliSense可能会停止工作。 此修复程序已在SQL Server 2008 R2 SP1中发布。 有关更多信息,请阅读此KB. 知识库

翻译自: https://www.sqlshack.com/using-and-troubleshooting-sql-server-intellisense-sql-server-2012-higher/

intellisense