为什么获得超时过期错误甚至将命令超时设置为0?

时间:2017-10-09 08:26:15

标签: sql-server ado.net

在我的情况下,我编写了一个工具来从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,任何人都可以知道出现超时过期错误的原因吗?

0 个答案:

没有答案