Cyb*_*ist 5 c# sql-server ado.net timeout
我有一个执行数据库搜索的相对复杂的存储过程。这是一个很好的 400 行长,但是当我在 Sql Server Management Studio 中使用不会返回任何命中的搜索参数执行它时,大约需要 1 到 3 秒才能完成。执行返回几百行的搜索所需的时间几乎相同。
但是,当我从调用此存储过程的 Web 应用程序运行它时,使用完全相同的搜索参数,它基本上从不返回结果。我已将连接和命令超时增加到 5 分钟,但仍然没有回来。事实上,它在抛出超时异常之前需要我允许的 5 分钟。
此超时发生在 Web 服务器和我的工作站上,与生产数据库背道而驰。
关于我可能会反对什么的任何想法?代码是 C#,我已经在 using 子句中运行了 Microsoft.Practices.EnterpriseLibrary 代码以及直接的 SqlClient 代码,并且没有一个。有 19 个参数,所以这是我最近尝试的简化版本:
IList<QueryResultsItem> resultsItem = new List<QueryResultsItem>();
string connString =
"server=[servername];database=[dbname];uid=[userid];pwd=[psw];Connection Timeout=300";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandTimeout = 300;
cmd.Connection = conn;
cmd.CommandText = "ap_tems_get_batch_history_list";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parm = new SqlParameter();
parm.ParameterName = "@parm";
parm.Value = [value];
parm.Size = 3;
parm.SqlDbType = SqlDbType.Char;
cmd.Parameters.Add(parm);
...
SqlDataReader reader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我在 Web 应用程序中遇到过不少此类超时问题。这是我的发现。
我的经验是,如果 SSMS 中的 sql 语句完成时间超过 1 秒,您可能会在 Web 应用程序的默认设置中遇到超时问题。它在选择中比在插入或更新中更常见。
我的解决方案:
| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |