多线程Windows服务中的多个同时SQL连接超时
||
我有一个用VS 2010(.NET 4.0)开发的多线程Windows服务,该服务可以具有数个线程到数十个线程,每个线程都通过Internet从速度较慢的服务器中检索数据,然后使用本地数据库进行记录此数据(因此该进程是Internet绑定的,而不是LAN或CPU的绑定)。
以一定的规律性,我同时从多个线程中收到以下错误的泛洪/突发/突发:
System.Data.SqlClient.SqlException(0x80131904):超时已过期。在操作完成之前超时或服务器没有响应。
此错误的调用堆栈通常为:
在System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection externalConnection,DbConnectionFactory connectionFactory)
在System.Data.SqlClient.SqlConnection.Open()
我没有在连接字符串中指定连接超时,并且该数据库中还有其他应用程序和进程正在运行。有没有人遇到过这种行为,如果可以的话,该怎么做?
我的数据访问层中最常用的方法是这样的,而我的所有其他DAL方法都遵循相同的方法:
using (SqlConnection con = new SqlConnection(GetConnectionString()))
using (SqlCommand cmd = new SqlCommand(\"AddGdsMonitorLogEntry\", con))
{
cmd.CommandType = CommandType.StoredProcedure;
/* setting cmd.Parameters [snipped] */
// We have been getting some timeouts writing to the log; wait a little longer than the default.
cmd.CommandTimeout *= 4;
con.Open();
cmd.ExecuteNonQuery();
}
非常感谢!
编辑
对于在镜像环境中发生的有关此问题的评论,我确实应该提到有关数据库已镜像。在SSMS中以“没有自动故障转移(同步)的高安全性”模式将其标记为“同步主体”。
编辑5/26/11
我在SQL Server日志中看不到任何指示任何问题的信息。 (我无权访问该服务器上的Windows事件查看器,但我已要求某人来找我。)
没有找到相关结果
已邀请:
5 个回复
掀辟髓观粟
脖呐
烷刨画颠离
荆怖赡
耐钨徒