查询“Command Timeout = 0”时超时时间
本文关键字:超时 时间 Command Timeout 查询 | 更新日期: 2023-09-27 18:11:41
我有一个令人沮丧的问题,查询通常需要1.5-2分钟才能运行(由于缺乏修改该数据库的能力,我们无法在此时间内改进它)。查询超时,尽管命令超时属性被设置为0(这是c#代码)。
下面是执行查询的代码:public DataTable GetData()
{
DataTable results = new DataTable();
try
{
using (var sqlConnection = new SqlConnection(ConfigurationManager.AppSettings["SqlConnectionString"].ToString()))
{
String command = _query;
sqlConnection.Open();
var sqlCommand = sqlConnection.CreateCommand();
sqlCommand.CommandText = command;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandTimeout = 0;
SqlDataAdapter daM = new SqlDataAdapter(sqlCommand.CommandText, sqlConnection);
daM.Fill(results);
sqlConnection.Close();
}
}
catch(Exception e)
{
Console.WriteLine("Error " + e.StackTrace);
}
Console.WriteLine("Retrieving results for query " + _query);
Console.WriteLine("Total Results: " + results.Rows.Count);
return results;
}
我不知道到哪里去找罪魁祸首。设置更明确的超时没有任何作用,正如我所说,没有办法进一步改进我们已经能够找到的查询。连接字符串有以下参数:
server =
集成安全= SSPI
database =
连接超时时间= 0
有什么建议我下一步应该去哪里看吗?我们使用的是Microsoft SQL Server。
您已经设置了sqlCommand.CommandTimeout
,但稍后您将SqlDataAdapter
创建为
SqlDataAdapter daM = new SqlDataAdapter(sqlCommand.CommandText, sqlConnection)
这里适配器隐式地创建并使用新的 SqlCommand
(不是您配置的),因为您已经传递了命令文本,而不是SqlCommand
的实例。
使用SqlDataAdapter
的另一个构造函数并像
SqlDataAdapter daM = new SqlDataAdapter(sqlCommand)
在SqlConnection上设置超时在您的情况下不起作用,您需要在SqlDataAdapter上设置超时
daM.SelectCommand.CommandTimeout = Value;
谷歌"如何更改SqlDataAdapter .CommandTimeout?"