프로덕션 SQL Server에서 많은 db 연결이 열려있는 것을 보았습니다. 일부는 매우 오랫동안 연결되었습니다. 이들 중 상당수는 공개 거래가 있습니다. 쿼리에 표시되는 내용 :SQL Server에서 sysprocesses를 오랫동안 열어 두었던 이유는 무엇입니까?
select * from sysprocesses where open_tran>0
상태가 "sleeping", 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를이 벡에서 일부이며 그것을 만든 응용 프로그램의 호출에서 다음 명령을 기다리고있는 상황입니다 수 있습니다. . 응용 프로그램은 DB 전화를 만들 수 있고 열어 둘 수 있습니다. 열 수 있고 닫을 수 있습니다. 많은 나쁜 웹 코더가 dbs를 열고 닫지 않으며 알림을 닫는 데 시간이 걸립니다. – BugFinder