sql2005活动监视器的一个问题

uuyi 2009-07-11 12:58:36
.NET写的程序

数据读取用的IDataReader

用的using{}的方式引用的IDataReader

发现一个问题,好像用完了之后,数据库连接都没关闭

问题来了:

用select * from sysprocesses where dbid in (select dbid from sysdatabases where name='tbname')

查询发现有很多sleeping的数据库空闲连接

这应该不是正常情况把?按道理是不是应该只有1个数据库连接?

因为好像空闲的过多,数据库服务器就会拒绝请求了?
...全文
181 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2009-07-14
  • 打赏
  • 举报
回复
学习
JonasFeng 2009-07-14
  • 打赏
  • 举报
回复
楼主可以查看下每个SLEEPING的进程。
看看到底是什么原因引起的。


这个跟USING 没什么关系
uuyi 2009-07-14
  • 打赏
  • 举报
回复
测试手动销毁和用using的方式

结果是一样的,还是有很多睡眠的数据库连接。

redhat4 2009-07-11
  • 打赏
  • 举报
回复
人力资源管理培训咨询项目遇到同样问题

学习
zs621 2009-07-11
  • 打赏
  • 举报
回复
connection 要关闭
IDataReader 也要关闭
  • 打赏
  • 举报
回复
即使你没有任何连接,依然会有许多的sleeping,所以是正常的。

另外还要看你sleeping的连接是什么性质的,是个人连接的还是系统的
jack_ailly 2009-07-11
  • 打赏
  • 举报
回复
建议手动销毁数据库连接。
uuyi 2009-07-11
  • 打赏
  • 举报
回复
我知道的,但是

用的using{}的方式引用的IDataReader

按道理应该用完对象之后自动销毁对象的

我昨天测试不用using,手动销毁IDataReader

对象,空闲的数据库连接还是会存在

这是为什么呢
ChinaJiaBing 2009-07-11
  • 打赏
  • 举报
回复

每一次打开连接,都要关闭数据库

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧