在 SQL Server Management Studio 中使用 GitHub Copilot Chat 体验

SQL Server Management Studio(SSMS)中用于GitHub Copilot的聊天窗口支持在 SSMS 中增强的 AI 辅助数据库管理和开发。 使用 SQL 数据库时,它有助于提高生产力和效率。

SSMS 中 GitHub Copilot 生成的查询在用户的登录和权限的上下文下执行。 GitHub Copilot没有单独的权限。 在 Ask 模式下,Copilot使用分类系统来确定生成的查询在执行之前是否为只读查询。

重要

虽然此系统阻止写入操作,但它不是安全边界。 在数据库层使用最低特权原则强制实施访问控制:仅向用户授予他们访问特定对象所需的 SELECTEXECUTE 权限。 安全边界是SQL Server的权限强制实施,而不是Copilot分类系统。

本文介绍如何在 SSMS 中使用GitHub Copilot聊天,这是 SSMS 中直接存在的GitHub Copilot完全集成的 AI 驱动的聊天体验。 它使你可以获得Transact-SQL(T-SQL)支持,包括语法和特定于上下文的帮助,而无需离开 SSMS UI。 使用聊天界面以提示形式提交您的问题,并提供意图以便获得更精确的答案。

为什么在 SSMS 中使用 GitHub Copilot Chat?

GitHub Copilot Chat提供了 AI 帮助,帮助你做出有关 SQL 数据库的明智决策,并更快地编写更好的 T-SQL。 在 SSMS 中集成了连接上下文和架构理解功能后,GitHub Copilot Chat 能够理解你正在处理的内容,并可以帮助完成以下任务:

  • T-SQL 帮助:

    • 获取与上下文相关的代码建议和推荐。
    • 了解和记录查询的作用。
    • 获取在查询中修复语法错误的帮助。
    • 重构查询。
  • 数据库管理:

    • 获取管理设置、安全性等的帮助。
    • 配置和监视数据库维护。
    • 实现新的 SQL 功能。
  • 数据库开发:

    • 架构设计。
    • 数据类型选择。
    • 索引建议。

先决条件

要在 SSMS 中使用 GitHub Copilot 聊天功能,你需要具有 AI 协助工作负荷的 SSMS 22 或更高版本,以及具有 Copilot 访问权限的 GitHub 帐户。 你也可以在 SQL Server Management Studio 中免费使用 GitHub Copilot。

在 SSMS 中使用Copilot Chat

使用自然语言询问数据库和 T-SQL 问题,GitHub Copilot Chat在数据库及其连接上下文中回答这些问题。

可以在两个位置向Copilot提问这些问题:聊天窗口,或者直接在你想要修改的代码中通过内联聊天进行提问。 在需要修改或添加到编辑器中打开的 SQL 文件的问题时,直接在聊天对话中进行可能效果最佳。 使用聊天窗口回答常规 T-SQL 问题。

若要改进 Copilot Chat 结果,请学习如何使用 参考文件线程斜杠命令,在 Copilot Chat 中获取更好答案,并具备特定上下文的范围。

在聊天窗口中提问

SSMS 中Copilot Chat的聊天窗口使你能够提问并在聊天窗口中查看答案。 通常选择使用 Copilot 来帮助解决数据库问题和一般 T-SQL 问题。

  1. 打开查询编辑器窗口并连接到数据库。
  2. 在 SSMS 中,选择 View>GitHub Copilot Chat
  3. 使用聊天窗口中的示例初学者提示开始浏览Copilot Chat,或键入提示,然后选择 EnterSend 以提交问题。
  4. 如果Copilot Chat提供要使用的 T-SQL 建议, 选择 Apply将代码应用于活动查询编辑器,Copy 代码块复制建议,或添加到新文件以在新文件中插入代码建议。
    • 如果请求有关了解代码的帮助,则 “插入新文件 ”选项不可用。
  5. 如果选择 “应用”,则代码建议将应用于差异视图模式中的活动编辑器。 可以使用 Tab 查看和优化所建议的内容,并使用 Tab 应用它,或使用 Alt+Delete 将其丢弃。

在内嵌聊天视图中提问

SSMS 中Copilot Chat的内联聊天视图使你能够提出问题,并在编辑器窗口中直接查看代码内联答案。 使用内联聊天,无需来回转到聊天窗口。 你可能会发现,通过内联聊天与Copilot协作,处理添加或更新当前打开的SQL文件的问题会更加容易。

  1. 在 SSMS 中,选择 Alt+/,在编辑器中显示Copilot Chat的内联聊天视图。
  2. 在Ask Copilot文本框中键入 T-SQL 相关问题,然后选择 EnterSend 提问。
  3. 来自Copilot Chat的代码建议显示在差异视图中。 可以使用 Tab 查看和优化所建议的内容,并使用 Tab 对代码应用更改,或使用 Alt+Delete 将其丢弃。
  4. 可以通过在 聊天窗口中选择“查看”将内联聊天线程提升到聊天窗口。 将聊天提升到窗口将保留对话的记录和上下文,你可以在聊天窗口中继续。
  5. 选择 Esc 以关闭内联聊天视图。

注释

从 SSMS 中的 GitHub Copilot 的查询是在用户登录名和权限的上下文下执行的,无论是从聊天窗口还是内联聊天界面。 SSMS 中没有单独的GitHub Copilot权限。

为单独的对话创建线程

在聊天会话中提问并发送提示时,Copilot使用聊天提示和响应的历史记录。 前面的提示和响应提供当前聊天提示的上下文。 可以提出后续问题或澄清以前的问题,而无需重复上下文。 例如,可以询问What is the compatibility mode for this database?What are the differences between compatibility mode 140 and 170?Do all users need to be out of the system when changing compatibility mode?等等。

使用讨论串为新任务启动新对话。 在聊天窗口中选择“ 创建新线程 ”或 “Ctrl+N ”以启动新线程。 当你想转移到不同的主题并避免先前的讨论背景和历史记录时,新线程会非常有用。 使用线程使对话专注于手头的任务,并保持上下文清晰,以便答案基于相关的历史记录。

切换聊天线程

可以在多个正在进行的线程之间自由切换,为您的问题提供正确的历史背景。 对下一个线程使用 Ctrl+Page Down ,或者在聊天窗口中对上一个线程使用 Ctrl+Page UpCtrl+Shift+T 展开线程下拉列表。

保留内联聊天

若要保留内联聊天的历史记录,请将其提升到聊天窗口。 在 聊天窗口中选择“查看” 以维护聊天的记录和上下文,并继续在聊天窗口中。

删除聊天线程

若要开始使用新的聊天会话并放弃当前上下文,请选择“ 删除线程”。 删除不再相关的或未提供所需结果的线程。

预览 Markdown 内容

可以直接在 Markdown 编辑器中预览Copilot Chat生成的任何 Markdown 内容。 当Copilot Chat生成 Markdown 内容时,选择聊天窗口右上角的“预览”按钮以查看呈现的预览。 可以根据需要编辑和保存 Markdown 内容。 如果想要快速可视化和处理 Markdown 文件,而无需手动复制和粘贴,此功能非常有用。

生成美人鱼图

Copilot Chat可以生成Mermaid 关系图,包括实体关系、流程图、甘特图等。 然后,可以直接在编辑器中可视化复杂的关系和工作流。

例如,可以使用以下一个或多个提示:

  • Visualize the relationships between tables in this database as a Mermaid diagram
  • Visualize the relationships between tables in the Orders schema of this database as a Mermaid diagram
  • Create a Mermaid flowchart for the steps to change the compatibility mode

Copilot使用活动查询编辑器和添加的任何引用来收集上下文,然后在聊天窗口中返回美人鱼语法。 选择 “预览 ”以打开新的 Markdown 文件并查看关系图。 可以保存或共享 Markdown 或呈现的图表以供将来使用。

小窍门

可以使用 Markdown 预览控件在预览 模式之间切换,并放大复杂的美人鱼图。

自定义Copilot Chat

可以根据 SSMS 中的工作流和要求自定义Copilot。

  • 使用引用管理上下文:使用 + 按钮附加更多上下文,例如 .sql 文件或 .sqlplan 文件。 有关详细信息,请参阅《在 SQL Server Management Studio 中为 GitHub Copilot 添加上下文》。

  • 访问不同模型:使用提示窗口中的模型选择器选择 AI 模型,或将您自己的模型整合到 Copilot 中。 了解不同方案的不同模型,无论是回答快速问题、编写文档还是生成代码编辑。 有关详细信息,请参阅 SQL Server Management Studio 中的 GitHub Copilot 的 AI 模型