Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlDataAdapter.Fill花费的时间比CommandTimeout多_C#_Sql_Sql Server_Ado.net_Sqldataadapter - Fatal编程技术网

C# SqlDataAdapter.Fill花费的时间比CommandTimeout多

C# SqlDataAdapter.Fill花费的时间比CommandTimeout多,c#,sql,sql-server,ado.net,sqldataadapter,C#,Sql,Sql Server,Ado.net,Sqldataadapter,执行此查询时,虽然我将ConnectionTimeOut设置为1秒,SqlDataAdapter.Fill所需时间超过65秒。超时不起作用 var cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "select * FROM [tblLargeData]"; con.Open(); cmd.Connection = con; var ds = new DataSet(); var da

执行此查询时,虽然我将
ConnectionTimeOut
设置为1秒,
SqlDataAdapter.Fill
所需时间超过65秒。超时不起作用

var cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * FROM [tblLargeData]";
con.Open();
cmd.Connection = con;

var ds = new DataSet();
var da = new SqlDataAdapter(cmd);
da.SelectCommand.CommandTimeout = 1;
da.Fill(ds);
tblLargeData
是SQL server数据库中包含大量数据的表。 但是当我像这样更改查询时,
CommandTimeOut
工作正常,超时发生

var cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * INTO #temp1 FROM [tblLargeData]; SELECT * FROM #temp1";
con.Open();
cmd.Connection = con;

var ds = new DataSet();
var da = new SqlDataAdapter(cmd);
da.SelectCommand.CommandTimeout = 1;
da.Fill(ds);
CommandText
中,首先在临时表中插入结果,然后从中选择结果


为什么CommandTimeout在第一次查询中不起作用?

根据您报告的行为,我的最佳猜测是,超时一直持续到SQL Server开始发回数据为止。您的第一个查询可能立即开始返回数据,发送数据的过程需要很长时间。第二个查询在SQL Server上花费大量时间处理数据,如果超时在完成之前发生,那么您的查询将正确取消。使用SqlDataAdapter的模式好吗?连接关闭了吗?