当前位置:编程学习 > C#/ASP.NET >>

.NET Web应用连接SQL2005超时

各位大侠:
  我今天在部署web应用时,遇到一个问题,当数据库和web应用都在内网时,应用一切正常。当把web应用移到外网服务器(防火墙安全级别比较高)时,web应用服务器连接数据库服务器,当取多数据时就会老报以下这个异常:
  System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
  at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
  at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
  at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
  at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
  at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()。
  比如:[table]有5000条记录,用select top 33 * from [table] 正常。当取多余34条数据时就会报上述那个异常:select top 35 * from [table];数据库执行这条语句只有几毫秒.
  各位高手有没有什么好的解决方法 --------------------编程问答-------------------- 检查数据库连接字符串 --------------------编程问答-------------------- 设置下连接时间看看:

OleDbDataAdapter sqlDA = new OleDbDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.SelectCommand.CommandTimeout = 1200;//设置连接时间
sqlDA.Fill(dataSet, tableName);
--------------------编程问答--------------------    在数据库连接字符串,添加一下Max Pool Size = 512;同时把不用的连接关闭。 --------------------编程问答--------------------
引用 1 楼 wuyq11 的回复:
检查数据库连接字符串


如果数据库连接字符串有问题,取30条数据怎么能成功? --------------------编程问答--------------------
引用 2 楼 wangxiaofeiwuqiao 的回复:
设置下连接时间看看:

C# code

OleDbDataAdapter sqlDA = new OleDbDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.SelectCommand.CommandTimeout = 1200;/……

数据库执行很快,而且在内网时没有问题,我怀疑不是网络防火墙做了什么限制 --------------------编程问答-------------------- --------------------编程问答-------------------- command查询也有限制时间的

你数据量多了会超时。

2楼的方法你试下。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,