在我的情况下,我编写了一个工具来从sql server结果生成报告。 有一个存储过程来从数据库中获取结果。使用ADO.NET访问sql server数据库,并通过从app.config获取的值将命令超时设置为0(sqlcommand.commandtimeout = 0)。 命令超时表示0为无限运行查询。
即使将命令超时设置为0,我也会收到错误,
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding
代码:
try
{
DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDBConnection"].ConnectionString))
{
SqlDataAdapter sda = new SqlDataAdapter();
con.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = int.Parse(ConfigurationManager.AppSettings["CommandTimeout"]);
cmd.CommandText = "MyProc";
sda.SelectCommand = cmd;
sda.Fill(ds, "TableName");
}
}
return ds.Tables[0];
}
catch (Exception ex)
{
throw ex;
}
的App.config
<configuration>
<connectionStrings>
<add name="MyDBConnection" connectionString="Data Source=.\SQL2008R2INST; Integrated Security=SSPI; Initial Catalog=MyDB"/>
</connectionStrings>
<appSettings>
<add key="CommandTimeout" value="0"/>
</appSettings>
</configuration>
即使我将命令超时设置为0,任何人都可以知道出现超时过期错误的原因吗?