基于复杂查询填充临时表时如何设置超时?

Posted

技术标签:

【中文标题】基于复杂查询填充临时表时如何设置超时?【英文标题】:How do I set the timeout when filling a temporary table based on a complex query? 【发布时间】:2009-10-07 05:07:02 【问题描述】:

以下情况如何设置命令超时?澄清一下,我已经在连接字符串中设置了连接超时,但我还需要设置命令超时,因为我希望查询能够在需要时运行 5 分钟,但它会在不到一分钟的时间内超时一会儿。

 String reportQuery = @"  complicated query returning many rows    ";

 SqlConnection ReportConnect = new SqlConnection(ConnectionString);

 ReportConnect.Open();

 DataSet tempDataset = new DataSet();

 SqlDataAdapter da = new SqlDataAdapter(reportQuery, ReportConnect);

 da.Fill(tempDataset);

【问题讨论】:

【参考方案1】:

您可以创建一个SqlCommand 在命令上设置CommandTimeout 属性,然后将其传递给数据适配器的构造函数。是这样的:

String reportQuery = @"  complicated query returning many rows    ";
SqlConnection ReportConnect = new SqlConnection(ConnectionString);
ReportConnect.Open();
SqlCommand command = new SqlCommand(reportQuery, ReportConnect);
command.CommandTimeout = 300; //5 mins
DataSet tempDataset = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(command);
da.Fill(tempDataset);

【讨论】:

以上是关于基于复杂查询填充临时表时如何设置超时?的主要内容,如果未能解决你的问题,请参考以下文章

小白 sql的查询问题

使用mybatis的resultMap进行复杂查询

在某些情况下,为什么CTE(公用表表达式)与SQL Server中的临时表相比会减慢查询速度

5 复杂查询

复杂SQL查询的可编辑QTableView

JAVA入门到精通-第62讲-复杂查询