You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Microsoft SQL Server扩展事件查看SET选项排查慢查询问题

扩展事件完全支持捕获查询执行时对应的SET选项配置,以下是具体实现方案及你场景下的排查补充:

方案1:捕获连接建立时的全量SET选项

连接建立时触发的existing_connection_established事件会默认携带连接的SET配置,你可以通过以下扩展事件会话捕获:

CREATE EVENT SESSION [Capture_Connection_Set_Options] ON SERVER 
ADD EVENT sqlserver.existing_connection_established(
    ACTION(
        sqlserver.client_app_name,
        sqlserver.client_hostname,
        sqlserver.session_id,
        sqlserver.set_options,
        sqlserver.set_options_text -- SQL Server 2016及以上版本支持,直接返回可读的SET选项文本
    )
    WHERE client_app_name = N'你的.NET应用名称' -- 可过滤仅捕获目标应用的连接
)
ADD TARGET package0.event_file(SET filename=N'Capture_Connection_Set_Options.xel')
GO

捕获到的set_options_text字段会直接返回ANSI_NULLS=ON, ANSI_PADDING=ON, ARITHABORT=OFF...格式的可读文本,无需手动解析位图。

方案2:关联查询计划与对应SET选项

如果需要和捕获的查询计划一一绑定,可以在查询计划事件上添加SET选项相关的动作:

CREATE EVENT SESSION [Capture_Plan_With_Set_Options] ON SERVER 
ADD EVENT sqlserver.query_post_execution_showplan( -- 捕获实际执行计划
    ACTION(
        sqlserver.session_id,
        sqlserver.sql_text,
        sqlserver.set_options,
        sqlserver.set_options_text
    )
    WHERE sqlserver.database_name = N'你的第二个数据库名称' -- 过滤慢查询所在的数据库
)
ADD TARGET package0.event_file(SET filename=N'Capture_Plan_With_Set_Options.xel')
GO

启动会话后触发慢查询操作,即可在捕获的事件中同时看到执行计划和对应的SET选项,直接和SSMS执行时的SET选项对比,即可确认是否是配置差异导致的执行效率差异。

本地快速验证方案

如果只是临时验证第二个SqlConnection的SET配置,可以直接在代码中添加诊断逻辑,无需配置扩展事件:
在connection.Open();之后插入以下代码,直接输出当前连接的SET选项:

// 新增诊断代码
var checkCmd = new SqlCommand("DBCC USEROPTIONS", connection);
var optionReader = checkCmd.ExecuteReader();
while (optionReader.Read())
{
    Console.WriteLine($"{optionReader["Set Option"]}: {optionReader["Value"]}");
}
optionReader.Close();
// 原业务代码继续执行
SqlDataReader reader = command.ExecuteReader();

常见会导致执行计划不匹配的SET选项包括ARITHABORT、ANSI_NULLS、ANSI_PADDING、QUOTED_IDENTIFIER、CONCAT_NULL_YIELDS_NULL,优先对比这几个配置即可。

内容的提问来源于stack exchange,提问作者bumlutedru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:06:09