使用asp.net开发网站,使用的sql server数据库,平时程序都正常,但是运行一段时间后,会出现SQL Server 不存在或访问被拒绝。也可能出现,
超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小.
这样的错误,检查程序开连接后都有写关闭,并释放资源。
数据库连接探测也没问题。
虽然这个问题每天会出现几次,但是总觉得不爽。希望有碰到过兄弟讨论一下。
超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小.
这样的错误,检查程序开连接后都有写关闭,并释放资源。
数据库连接探测也没问题。
虽然这个问题每天会出现几次,但是总觉得不爽。希望有碰到过兄弟讨论一下。
检查一下你的代码,每次调用完数据库是否关闭数据库连接了
就是因为所有需要注意的点都注意到了,程序并不是不能正常运行,只是日志每天都会记录这样的错误,看着不爽。
仔细梳理了一遍代码,确认在数据库模块所有的代码都关闭连接了
后面用
1、打数据库最新补丁
2、sp_configure 'user connections',1000
3、打开“控制面板”=》“许可协议”=》“产品:sql server xxxx" 下面选“每服务器” 100个并发连接然后只要系统运行正常,天要下雨,娘要嫁人,由它去了!
当然我这是不负责的做法,但这样的问题想找到病根确实不容易.
一起等待高人的回复吧说实话 如果是对数据库有高端的要求
我对sql server的信心不足
——————————————————————————————————————————
往往,逻辑东西根本不能用眼睛简单遍历代码。就好像你看得懂一本小说的每一个字但是未必能够理解小说的深意,你认为你的代码都有些了关闭,但是你未必模拟了执行时的全部流程。最好的办法是用结构来彻底免去猜测流程分析的复杂责任。如果我去查,我会搜索整个解决方案中关于“关闭连接”的代码,如果发现了,就说明程序写错了。因为只应该使用using(){}结构来关闭,而不应该写代码关闭。
一种是
try
{
}
catch
{
}
finally
{
关连接
}还用了using(开连接){}我全部用的标准方式。
try
{
using(con=new SqlConnection (连接串))
{
访问数据库
}
}
catch
{
}
finally
{
if (con!=null)
{
con.Close();
}
}
try
{
using(con=new SqlConnection (连接串))
{
访问数据库
}
}
catch
{
}
finally
{
if (con!=null)
{
con.Close();
con.Dispose();
}
}
---------------------
conn.Close()只是关闭连接
并没有释放资源
con.Dispose()才是释放资源
---------------------------------
还有 你用户数同时超过你有最大连接数,会不会出现错误呢
telnet dbserver 1433看是否能连通,如果超时,我觉得时表示网络问题。有可能那一小段时间,网络真的断开了。
还有,日志是否有记录了什么可疑的信息吗?
打开管理工具的“性能”,对sql进行监控。