最近有个多线程程序,连接本机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问题?
总结以上是内存溢出为你收集整理的奇怪的SQLServer“超时已过期”及“不存在或拒绝访问”错误全部内容,希望文章能够帮你解决奇怪的SQLServer“超时已过期”及“不存在或拒绝访问”错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)