加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET网站对SQL Server Express实例的连接产生了疑问 – 如何

发布时间:2020-12-16 09:20:54 所属栏目:asp.Net 来源:网络整理
导读:这是一个相当大的,编码很糟糕的ASP.NET网站,我目前负责维护.我不确定如何解决的一个问题是,在看似随机的时间,实时网站将完全锁定,页面访问是可以的,但任何触及数据库的内容都会导致应用程序无限期挂起. 原因似乎是对数据库的更多开放连接,而不是对低级别流量
这是一个相当大的,编码很糟糕的ASP.NET网站,我目前负责维护.我不确定如何解决的一个问题是,在看似随机的时间,实时网站将完全锁定,页面访问是可以的,但任何触及数据库的内容都会导致应用程序无限期挂起.

原因似乎是对数据库的更多开放连接,而不是对低级别流量网站的期望.活动监视器显示150个打开的连接,大多数具有应用程序值“.NET SqlClient Data Provider”,并具有网络服务登录.

一个快速的解决方案是重新启动SQL Server服务(我还回收了ASP.NET应用程序池,只是为了确保应用程序可以解决任何问题,并阻止任何代码重新尝试打开连接,如果存在某种循环过程我不知道的.但这并不能帮助我解决问题.

该应用程序使用Microsoft SQLHelper类,这是一个非常常见的库,所以我相信使用此类的代码将在需要时关闭连接.

然而,我发现了一些未正确关闭的DataReader.我认为我说对,DataReader可以保持底层连接打开,即使该连接已关闭,因为它是一个连接类(如果我错了,请纠正我).

它所特有的是其中一个管理员重新启动服务器(不是数据库服务器,实际服务器)和immediatley,该站点将再次挂起.罪魁祸首又是150个开放的数据库连接.

有没有人有任何诊断技术,他们可以与我分享,以解决这种情况发生的原因?

更新:SQL Server日志文件显示许多这样的条目(30)

2010-10-15 13:28:53.15 spid54启动数据库’test_db’.

我想知道服务器是否被攻击者击中了.这可以解释启动后的许多连接,以及看似随机的时间.

更新:已更改AutoClose属性,但仍在寻求解决方案!

更新2:请参阅我对该问题的答案以获得解决方案!

解决方法

更新:

大量启动数据库:将AutoClose属性设置为false:REF

您的DataReader是正确的:请确保关闭它们.但是,即使连接正确关闭,我也遇到了许多连接产生失控的问题.连接池似乎没有按预期工作,因为每个post-back都创建了一个新的SqlConnection.为了避免这种看似不必要的重新创建连接,我采用了Singleton方法来处理我的DAL.所以我创建了一个DataAdapter并通过它发送我的所有数据请求.虽然我被告知这是不明智的,但我还没有得到任何支持这个说法(我仍然渴望阅读任何文件/意见:我希望变得更好,而不是现状).我有一个DataAdapter类供您考虑,如果您愿意.

如果您使用的是SQL 2005,则应该能够使用Activity Monitor查看每个连接的“详细信息”,这有时会为您提供最后执行的语句.也许这会帮助您将语句追溯到代码中的某个位置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读