プロダクションSQL Serverで多数のDB接続が残っていることがわかりました。これらの多くは公開取引を行っています。クエリに表示されるとおり:SQL Serverでsysprocessesを長時間開いているのはなぜですか?
select * from sysprocesses where open_tran>0
ステータスが「スリープ中」、cmd =「AWAITING COMMAND」です。
For<ISessionFactory>().Singleton()
.Use(() => DataContext.GetSessionFactory());
For<ISession>().Transient()
.Use(context => context.GetInstance<ISessionFactory>().OpenSession());
いくつかのセッションは、トランザクションスコープを使用します:次のように
接続がNHibernateはを使用して開かれ _transactionScope =新しいのTransactionScopeを();
いくつかは、トランザクションを作成します。
_uncommittedTransaction = SessionUncommittedWrapper.Session.BeginTransaction(IsolationLevel.ReadUncommitted);
取引および/またはのTransactionScopeは、その後に配置されています。
なぜ接続はまだ開いていますか?何もブロックされていなければ、それは問題ですか?
を待っている状況です。アプリケーションはdbコールを作成してオープンにしたり、オープンしたり、オープンしたりすることができます。多くの悪いWebコーダーがdbsをオープンし、クローズしないようにします。 – BugFinder