System.ComponentModel.Win32Exception:等待操作超时

时间:2015-07-10 15:52:12

标签: c# .net sql-server

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

  

等待操作超时

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

2 个答案:

答案 0 :(得分:1)

我做的第一个也是非常重要的改变 - 我将DateTime对象更改为shortDate(例如startDate.ToShortDateString()),因此它删除了我日期的时间部分,并帮助了使用datetime param。

的SQL存储过程

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

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

第3次更改 - 我增加了超时

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

答案 1 :(得分:0)

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

甚至使用DataReader也会有帮助。