【问题标题】:System.ComponentModel.Win32Exception: The wait operation timed out [closed]System.ComponentModel.Win32Exception:等待操作超时[关闭]
【发布时间】:2015-07-10 15:52:12
【问题描述】:

我必须从 SQL 表中读取非常大的数据,大约 300000 行,并将其写入我的应用程序(.net 应用程序并使用 C#)中的文本文件。我有一个存储过程来读取该数据,我在我的代码中使用DataAdapterDataSet 来获取该数据,但我收到了错误

等待操作超时

当它执行dataAdapter.Fill(dataSet)时。我试图改变超时的值,但没有奏效。我尝试了不同的方法,但似乎没有任何效果。它适用于几行,但不适用于大数据。我无法抓取小数据,因为它们需要一个文本文件中的全部数据

【问题讨论】:

  • 请提供您的一些代码。

标签: c# .net sql-server


【解决方案1】:

我所做的第一个也是非常重要的更改——我将我的 DateTime 对象更改为 shortDate(例如 startDate.ToShortDateString() ),所以它从我的日期中删除了时间部分,它对我的​​ SQL 有很大帮助带有datetime 参数的存储过程。

第二次更改 --- 直接从 SqlDataReader 读取并使用 Read 方法直接写入文本文件,因为 DataTable 不会保留长文件(例如 420000KB)

using (SqlDataReader rdr = comm.ExecuteReader())
{                               
   while (rdr.Read())
   {
     file.WriteLine(rdr.GetString(0), true);
   }
}

第三次更改——我增加了超时时间

comm.CommandTimeout = 600; ( e.g for 10min)

【讨论】:

  • 感谢大家的帮助,我的代码现在运行良好。 ;)
【解决方案2】:

看看您是否可以将一个查询拆分为多个查询并同时执行,并在所有提取完成后加入结果。

甚至使用 DataReader 也会有所帮助。

【讨论】:

  • Thx。我已经尝试过 DataReader,它给了我同样的错误。公司不想拆分查询。这就是问题
猜你喜欢
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 2013-12-02
  • 2017-01-03
  • 1970-01-01
相关资源
最近更新 更多