首页 > 解决方案 > Visual Studio 诊断工具将查询变量显示为 SQL_VARIANT。这是个问题吗?

问题描述

当我使用诊断工具查看在我的应用程序期间运行的查询时,当我单击命令文本并在新窗口中获取全文时,我会看到类似这样的内容,其中定义了查询的变量:

--Type and value data was not available for the following variables. Their values have been set to defaults.
DECLARE @p0 AS SQL_VARIANT;
SET @p0 = NULL;

我担心实际查询正在使用像这样的一些变量,这可能会以不好的方式影响执行计划。这是一个真正的问题还是我只是感到困惑?

标签: sqlvisual-studio

解决方案


正在使用像这样的一些变量,这可能会以不好的方式影响执行计划。这是一个真正的问题还是我只是感到困惑?

SQL_VARIANT具有非常高的Data Type Precedence,所以是的,以这种类型传递参数会导致问题。必须将目标列转换为以SQL_VARIANT进行比较,以防止使用索引并干扰基数估计。

但正如来自 Visual Studio 的消息所说:

--以下变量的类型和值数据不可用。它们的值已设置为默认值。

所以这并不意味着您的应用程序实际上是使用SQL_VARIANT. 只是 Visual Studio 无法确定参数类型,因此默认SQL_VARIANT情况下生成与客户端发送的内容近似的批处理。


推荐阅读