ADO.NET参数导致超时

时间:2015-11-17 17:36:53

标签: c# sql-server ado.net

我有一个非常讨厌的数据透视查询,我通过ADO.NET从C#运行。我在2个地方和1个地方使用它我想要数据但在另一个地方我只想要结构(没有数据)。所以在我在where子句中添加的查询中:

1 = @test

因此,在我只想要表格结构的查询中,我将@test设置为2并且效果很好。但是,在查询中我想要数据我将其设置为1,但该查询超时(5分钟后)。如果我将sql拉入sql server并手动设置参数,它将在3分钟后返回。如果我从我的C#应用​​程序中完全删除1 = @test,它会在3分钟内恢复正常。如果我在我的C#应用​​程序中硬编码1 = 1,它会在3分钟内恢复正常。

我还在此查询中添加了一个日期参数,并且运行正常。

我的问题是,世界上关于@test参数的内容可能导致超时发生?

有没有办法看到ADO.NET真正发送到SQL Server的查询?

1 个答案:

答案 0 :(得分:1)

简单的答案是当你只需要做一个结构时修改实际的查询,使它包含你的1 = @test。这样,将创建两个单独的查询计划,每个查询计划类型一个,这两个查询计划都将针对它实际需要执行的查询进行最佳优化。