【发布时间】:2016-09-26 14:02:58
【问题描述】:
我注意到很多数据库连接在我的生产 SQL Server 上保持打开状态,其中一些连接很长时间。其中许多都有公开交易。如查询所示:
select * from sysprocesses where open_tran>0
它们处于 status = "sleeping", cmd = "AWAITING COMMAND"。
使用 NHIBERNATE 打开连接,如下所示:
For<ISessionFactory>().Singleton()
.Use(() => DataContext.GetSessionFactory());
For<ISession>().Transient()
.Use(context => context.GetInstance<ISessionFactory>().OpenSession());
一些会话使用事务范围: _transactionScope = new TransactionScope();
一些创建交易:
_uncommittedTransaction = SessionUncommittedWrapper.Session.BeginTransaction(IsolationLevel.ReadUncommitted);
事务和/或事务作用域在之后被处理。
为什么连接仍然打开?如果没有任何内容被阻止,这是否有问题?
【问题讨论】:
-
数据库部分受制于应用程序的调用和调用.. 应用程序可以进行数据库调用,并将其保持打开状态,或者它可以打开、执行和关闭.. 很多不好网络编码员打开数据库而不关闭它们,需要一段时间才能注意到关闭它
标签: c# sql-server nhibernate connection-pooling