c# - 如何延长 SQL 查询的超时时间

标签 c# .net sql timeout

这不是连接超时,因为与数据库的连接正常。问题是我正在调用的存储过程花费的时间超过 30 秒并导致超时。

函数的代码看起来像这样:

SqlDatabase db = new SqlDatabase(connectionManager.SqlConnection.ConnectionString);
return db.ExecuteScalar(Enum.GetName(typeof(StoredProcs), storedProc), parameterValues);

ExecuteScalar 调用超时。如何延长此功能的超时时间?

对于快速存储过程,它工作正常。但是,其中一个函数需要一段时间,调用失败。当以这种方式调用 ExecuteScalar 函数时,我似乎找不到任何方法来延长超时时间。

最佳答案

如果您正在使用 EnterpriseLibrary(看起来您确实在使用),请尝试以下操作:

 Microsoft.Practices.EnterpriseLibrary.Data.Database db = Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase("ConnectionString");
 System.Data.Common.DbCommand cmd = db.GetStoredProcCommand("StoredProcedureName");
 cmd.CommandTimeout = 600;
 db.AddInParameter(cmd, "ParameterName", DbType.String, "Value");

 // Added to handle paramValues array conversion
 foreach (System.Data.SqlClient.SqlParameter param in parameterValues) 
 {
     db.AddInParameter(cmd, param.ParameterName, param.SqlDbType, param.Value);
 }

 return cmd.ExecuteScalar();

编辑为直接根据评论处理 paramValues 数组。我还包含了您的 ConnectionString 值:

Microsoft.Practices.EnterpriseLibrary.Data.Database db = Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase(connectionManager.SqlConnection.ConnectionString);
System.Data.Common.DbCommand cmd = db.GetStoredProcCommand("StoredProcedureName", parameterValues);
cmd.CommandTimeout = 600;
return cmd.ExecuteScalar();

关于c# - 如何延长 SQL 查询的超时时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1111837/

相关文章:

c# - 如何从 Azure 自动化中的 Runbook 调用 DLL 中的 C# 方法?

sql - 动态计算存储在表列中的表达式

c# - 用于将 WCF 服务发布到 Azure 的 web.config 更改

sql - 什么是 postgres super 用户

python - 总账并发(django原子操作)

c# - 如何最小化锁定同时保持数据库相关操作是原子的

c# - 如何检查键是否是 NHibernate 中未保存的值

c# - 使用反射 C# 将动态对象转换为类型

c# - 功能区上的 CheckBox 和 ToggleButton 有什么区别?

.net - SslStream、BEAST 和 TLS 1.1