2009-11-24 3 views
0

GridView가있는 페이지가있는 웹 사이트가 있습니다. SQL 데이터 소스 컨트롤을 사용하여 GridView에 바인딩합니다. 사이트를 실행 한 후 내가 사용하는 SQL Server와 활성 연결의 어떤을 확인하지 오전 -asp.net에서 GridView 컨트롤에서 사용하는 db 연결을 닫는 방법

SELECT DB_NAME (DBID) 데이터베이스 이름으로, (DBID) 계산 등 NoOfConnections, loginame을 sys.sysprocesses DBID> 0에서 LoginName 로 GROUP BY dbid, loginame

웹 응용 프로그램을 종료 한 후에도 연결이 열려있는 것으로 나타났습니다. 이렇게 연결을 닫을 수있는 방법이 있습니다. 이것은 사용자의 수가 증가함에 따라 나에게 매우 중요합니다. 활성 연결 수를 늘리면 SQL Server 최대 풀 문제가 발생합니다. SQL 서버에서 사용자 연결을 늘려 왔지만 사용자가 로그 오프하자마자 연결을 명시 적으로 닫아야하는 솔루션이 필요합니다.

귀중한 시간을 공유해 주셔서 감사합니다.

답변

2

데이터 소스의 .Dispose()를 완료 한 후에 이것을 호출 해 보았습니까?

개인적으로 SQL Server에 대한 연결 수를 관리해야하는 상황에서는 SqlDataSource에서 멀리 떨어져 있습니다. 대신 'Using'블록으로 래핑 된 코드의 모든 작업을 수행합니다. 특히 연결을 열고 닫을 때 (다중 연결이 열려있을 때 연결을 닫는 것을 잊는 것은 매우 쉽습니다). '사용'

은 폐기 패턴에 대한 바로 가기를 제공합니다 - Using

+0

감사합니다. Mick! 내가 할 수는 있어도이 연결을 닫을 방법이없는거야? – IrfanRaza

+0

명시 적으로 - SqlDataSource를 사용할 때 연결이 닫히지 않는 조건이 항상 있습니다 (예 : 사용자가 브라우저를 닫을 수 있음). –

+0

treaschf가 말한 것처럼 web.config 파일에서 연결 풀링을 해제 할 수 있습니다. 그러나 최대 풀 크기 (연결 수 제한)와 마찬가지로, 특히 웹 응용 프로그램에서 무엇을하고 있는지 알지 못하는 한, 그 설정을 사용하지 않는 것이 좋습니다. 잘못된 설정은 클라이언트가 대기 할 때까지 기다려야하는 결과를 가져옵니다. 데이터 구동 페이지를 볼 수 있기 전에 연결이 끊어 지므로 시간 초과가 발생할 가능성이 높습니다. –

2

당신의 연결을 "열기"남아 있기 때문에 연결 풀링의 사용. 원하는 동작이 될 경우 연결 풀링을 해제하거나 한 번에 열 수있는 연결 수를 제한하십시오. 연결 문자열에서 설정할 수 있습니다.

+0

감사합니다. 개인적으로 확인 했습니까? 왜냐하면 수영장을 벗어난 후에도 내 문제가 해결되지 않기 때문입니다. – IrfanRaza

+0

나는하지 않았다. 그러나 나는 SqlDataSource가 ASP.Net 페이지가 언로드 될 때 커넥팅을 사용한 후 커넥션을 닫는다는 것을 확신합니다. 나는 그것에 문제가 없었습니다. 그러나 연결 풀링을 사용하면 연결을 닫아도 연결이 실제로 닫히지 않습니다. 다음 번에 다시 연결하기 위해 풀에 다시 넣을뿐입니다. – treaschf

관련 문제