通过 Visual Studio Code 的 MSSQL 扩展中的查询探查器,可以直接在编辑器中实时捕获和监视数据库活动。 查询探查器由扩展事件提供支持,提供低开销的性能监视,帮助你快速监测实时 T-SQL 活动,识别运行缓慢的操作,并在开发过程中发现性能瓶颈。
查询探查器支持 SQL Server(本地环境、私有云和公有云环境)以及 Azure SQL 数据库。 可以在开发和测试期间监视活动会话、查看执行详细信息,并了解应用程序如何在开发和测试期间与数据库交互,而无需在监视工具和编辑器之间切换。
小窍门
查询探查器目前处于预览状态,可能会根据反馈进行更改。 在 GitHub 讨论 中加入我们的社区,分享想法或报告问题。
Features
MSSQL 扩展中的查询探查器提供以下功能:
- 在实时事件网格中捕获实时查询和数据库活动。
- 使用模板选择和会话命名配置新的分析会话。
- 使用 “开始”、“ 暂停”、“ 恢复”、“ 停止”和 “清除数据 ”作控制会话生命周期。
- 运行多个并发分析会话,并使用会话选择器在它们之间切换。
- 按文本、数据库名称、持续时间和其他字段筛选捕获的事件。
- 切换自动滚动以跟踪最新事件或检查较旧的条目。
- 将捕获的事件导出到 CSV。
- 在只读模式下的 Profiler 网格中打开和查看现有的
.xel文件。 - 自动为 Azure SQL 数据库目标
Standard_Azure()选择适当的模板。 - 适用于所有受支持的 Visual Studio Code 平台上的 Windows、macOS 和 Linux。
先决条件
- 安装 适用于 Visual Studio Code 的 MSSQL 扩展的最新版本。
- 与支持的 SQL Server 实例或 Azure SQL 数据库的活动连接。
- 适当的服务器权限。 需要
ALTER ANY EVENT SESSION权限(或等效权限)才能启动分析会话。
启动查询探查器
可以从 “连接” 视图或 命令面板启动查询探查器。
在“连接”视图中:
在 “连接” 视图中,右键单击 SQL Server 实例。
选择“启动查询探查器”(预览版)。
在命令面板中:
打开命令面板(Ctrl+Shift+P 或 Cmd+Shift+P)。
选择 MSSQL:启动查询探查器。
如果当前没有连接处于活动状态,请在出现提示时选择连接。
“查询探查器”面板随即打开,绑定到所选连接。
创建分析会话
当查询探查器面板打开且没有活动会话时,会显示 “新建会话” 屏幕。
验证或更改分析会话连接。
从下拉列表中选择 模板 。 可用模板取决于连接目标:
- Standard_OnPrem:本地 SQL Server 的标准分析模板。
- TSQL_OnPrem:本地 SQL Server 的 T-SQL 分析模板。
- TSQL_Locks:具有本地 SQL Server 锁事件的 T-SQL 分析模板。
- TSQL_Duration:按本地 SQL Server 持续时间筛选 T-SQL 分析模板。
- Standard_Azure:Azure SQL 数据库的标准分析模板。
注释
选择 Azure SQL 数据库作为目标时,该扩展会自动选择
Standard_Azure模板。 如果只有一个有效的模板可用,则扩展会自动选择它,或将其显示为只读文本。输入 会话名称。 按 Enter键 确认或 Esc键 以取消。
面板转换为实时事件视图,并通过 SQL 工具服务创建探查器会话。
监视实时事件
运行分析会话时,事件网格按时间顺序流式传输捕获的事件。 网格根据所选模板显示以下列:
-
EventClass:捕获的事件类型,例如
sql_batch_starting或rpc_completed。 - TextData:T-SQL 语句或事件文本。
- ApplicationName:生成事件的应用程序。
- LoginName:与事件关联的登录名。
- ClientProcessID:客户端进程标识符。
- SPID:服务器进程 ID。
- StartTime:事件的时间戳。
- CPU:CPU 耗时。
- 读取:逻辑读取次数。
- 写入数:逻辑写入数。
- 持续时间:事件的执行时间。
- DatabaseName:事件发生的数据库。
- HostName:生成事件的主机。
工具栏操作
工具栏为活动会话提供以下控件:
| Action | Description |
|---|---|
| 新会话 | 打开新的会话流以创建另一个分析会话。 |
| 启动 | 恢复已暂停或停止的会话的事件流。 |
| 停止 | 停止分析会话。 未收到新事件,但捕获的事件仍可查看、筛选和导出。 |
| 暂停 | 暂时停止更新网格。 UI 显示 已暂停 的指示器。 |
| 清除数据 | 清除当前会话网格中的所有行。 如果会话仍在运行,新事件将继续填充网格。 |
| 清除所有筛选器 | 删除所有活动列筛选器并还原完整的事件视图。 |
| 快速筛选所有列... | 搜索所有列以快速查找匹配的事件。 |
| 导出到 CSV | 将当前会话捕获的事件导出到 CSV 文件。 |
| 自动滚动 | 切换网格是否在新事件到达时滚动到最新一行。 对于新会话,自动滚动默认处于打开状态。 |
筛选事件
使用列筛选器缩小事件网格范围并专注于相关活动。 每个列标题都包含一个筛选器图标,用于打开特定于该列的数据类型的筛选器。
按列值进行筛选(例如, DatabaseName 或 ApplicationName)
选择列标题上的筛选器图标,例如
DatabaseName。在筛选器下拉列表中,使用搜索框查找值,或从复选框列表中选择和取消选择特定条目。
选择 “应用” 以筛选网格。 选择 “清除 ”可删除该列的筛选器。
按数值进行筛选(例如) Duration
当一个或多个筛选器处于活动状态时,筛选器芯片显示在工具栏下方,其中显示了筛选哪些列。 选择芯片上的 X 以删除该筛选器,或选择“清除工具栏中的所有 筛选器 ”以一次性重置所有筛选器。
注释
筛选器在客户端应用于当前显示的事件和会话过程中新增传输的事件。
管理多个会话
查询探查器支持并发运行多个分析会话,每个会话都有自己的连接、模板和事件缓冲区。
从工具栏中选择 “新建会话 ”以创建另一个会话。 新会话可以针对相同或不同的连接。
使用 “会话选择器” 下拉列表在会话之间切换。 每个会话都显示其状态(正在运行、已暂停或已停止),并带有可视指示器。
切换会话时:
- 事件网格会更新以显示所选会话捕获的事件。
- 工具栏操作对所选会话执行。
导出捕获的事件
可以将捕获的事件从分析会话导出到 CSV 文件以供脱机评审或共享。
从工具栏中选择“ 导出到 CSV ”。 无论会话是正在运行、暂停还是已停止,导出都可用。
选择 CSV 文件的位置和文件名。
导出的文件包含会话网格中当前可见的事件。
打开现有的 XEL 文件
可以在查询探查器网格中打开和查看以前捕获的扩展事件跟踪文件(.xel)。
打开 命令面板 (Ctrl+Shift+P 或 Cmd+Shift+P)。
选择 MSSQL:打开 Profiler XEL 文件...。
浏览到并选择要打开的
.xel文件。
该文件将在只读 Profiler 面板中打开。 事件加载并显示在具有筛选功能的同一网格中。 启动、暂停和停止控件不可用,因为该文件不是实时会话。
支持的方案
查询探查器适用于以下 SQL Server 和 Azure SQL 目标:
| 目标 | 支持的模板 |
|---|---|
| SQL Server (本地、VM、容器) | Standard_OnPrem、TSQL_OnPrem、TSQL_Locks、TSQL_Duration |
| Azure SQL 数据库 | Standard_Azure |
注释
如果选择了不受支持的模板或尝试在 Azure SQL 数据库上执行服务器级会话,查询探查器会显示目标错误消息并建议相应的模板。
局限性
- 此预览版中没有 AI 或 GitHub Copilot 集成。
- 除了扩展事件和当前模板提供的内容之外,没有跨数据库或跨服务器关联。
- 不保存或加载筛选器预设。
- 不会从捕获的事件中重播跟踪,也不会生成脚本。
- 如果没有现有
.xel文件或实时连接,则不会进行脱机分析。 - 此预览版无法保证 Fabric 终结点中的 Azure SQL 托管实例和 SQL 数据库受支持。
反馈和支持
如果你有想法、反馈或想与社区互动,请加入讨论。https://aka.ms/vscode-mssql-discussions 若要报告 bug,请访问 https://aka.ms/vscode-mssql-bug。 若要请求新功能,请转到 https://aka.ms/vscode-mssql-feature-request。