奇怪的SQLServer“超时已过期”及“不存在或拒绝访问”错误

最近有个多线程程序,连接本机SQLServer 2008,大概300个连接,跑一会自己写的日志中就会出现“超时已过期”错误,或者出现“不存在或拒绝访问”错误。奇怪在于,程序开启后肯定有联通过,是在过一会儿才会出现这样的错误。

SQLServer日志中,和windows事件簿中没有看到任何有价值的信息。

首先,不会有多个线程使用到同一个TADOConnection的状况;表的索引也建立了,单个查询不会超过1秒。

继续,发现错误出现在开启程序30秒左右时,于是试着调整TADOCOnnection/TADOCOmmand/TADODataSet的TimeOut值,调成120秒,还是不行,还是在开启程序30秒左右出错。

SQLServer允许连接数是0,无限制,再调整SQLServer本身的连接/命令超时时间,还是一样的无效。郁闷。

程序本身有问题吗?把问题简单化吧,写一个小的测试程序,开300个线程,线程中创建TADOConnection/TADODataSet,对同一个数据库的同一个表查询,新增,没有出错,即使开到600个线程也不会出错。看来也不是SQLServer不够强,再郁闷。

Google了无数资料,有说数据库文件或日志文件增长方式设置问题,导致增长时超时。不限制日志增长,试过还是不行。

SQLServer的客户端,服务器的网络配置中也没有看出问题。

..........

..........

最后,无意中把连接字串中的“Data Source=.”改成了计算机名,居然就可以了。奇怪的是,改成本机IP:192.168.3.33居然连接不上。难道是DNS问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值