不寻常的SQL /数据问题

时间:2012-01-16 19:50:31

标签: c# asp.net sql stored-procedures

我们有一份报告给我们带来了一些严重问题,因此我决定将其放入控制台应用程序中以解决问题。

报告只是从SQL中选择一个简单的单一选项,返回大约25列, 我们的日期范围可以是3-6个月,返回大约10k行,所以我们不是在谈论大量数据。

这是最新发生的事情,当报告运行时,它从我们的网站出来,在控制台中,它需要13-18分钟才能完成,等待似乎发生在

{{2 }}

现在这是奇怪的事情,它在SQL Server Management Studio中运行大约1-3秒,当我们的Delphi开发人员创建一个类似的应用程序时,它也是几秒钟运行,这只发生在使用.NET

我们尝试从数据集更改为加载到datareader, 使用此代码..

da.Fill(ds);
然而它根本没有帮助,它只是显示在夹头中,但经常有延迟。我正在考虑它的SQL,但无法解释为什么它在Delphi和SQL Management Studio中工作正常。

我尝试过在所有框架上使用.NET 2.0,3.5和4。

这是我的代码

using (var dr = _command.ExecuteReader())
{
  if (dr.HasRows)
  {
    int i = 0;
    while (dr.Read())
    {
      var startRead = DateTime.Now;
      Console.Write("{2}\t{0}\t{1}\t", dr.GetInt32(0), dr.GetString(1), i);
      var tookRead = DateTime.Now.Subtract(startRead);
      Console.WriteLine("Took: " + tookRead);
      i++;
    }
}

有什么想法吗?我们的DBA指责框架,我实际上是在SQL中谴责某些东西..(可能是统计数据,或者是损坏的数据库)

2 个答案:

答案 0 :(得分:2)

.NET与其他客户端(SQL Management Studio)之间SQL性能的差异通常取决于配置不同的连接 - 频繁的罪魁祸首是ANSI_NULLS; ANSI_PADDING。

尝试查看SQL Management Studio中如何配置连接,然后在.NET应用程序中复制相同的内容。

答案 1 :(得分:0)

您提供的信息不包含足够的详细信息,无法真正帮助...

如果SSMS真的快得多,那么原因可能是某些会话/连接设置 - 与.NET相比,SSMS使用了微妙的不同设置。

有关可能有什么不同/错误等的一些解释和提示,请参阅http://www.sommarskog.se/query-plan-mysteries.html