2012-06-20 2 views
1

중단에 대한 데이터베이스 연결을 모니터링하는 방법이 있습니까? 하나의 연결은 응용 프로그램간에 공유되며 일부 개체는 연결 중단시 대응해야합니다..NET db 연결 중단을 모니터링하는 방법은 무엇입니까?

이상적으로 이벤트 여야합니다. 내가 찾은 유일한 것은 연결 예외이지만, 로컬에서 발생합니다 (예외를 듣고있는 곳).

DbConnection에서 상속을 받고이 객체에서 예외를 수신 (메서드 오버로딩)하고 관련 오류 코드에서 연결 오류 예외 신호를 발생시킵니다. 그러나 아마도 가장 간단한 방법이있을 것입니다.

아이디어를 제공해 주셔서 감사합니다.

+0

달성하려는 목표는 무엇입니까? – BrokenGlass

+0

일부 프로세스 (개체)는 연결 중단시 작업을 중지하고 다시 연결을 기다려야합니다. – Fanda

답변

7

단일 연결을 공유하는 것이 결코 좋지 않으며 IS 나쁜 습관입니다. 주된 이유는 실제로 당신의 문제입니다. 디자인을 조금 변경하고 (큰 문제는 아님) ADO.NET 연결 풀에 의존하시기 바랍니다. 특히 멀티 스레딩 상황에서 모든 종류의 병목 현상에 부딪 치고 싶지 않은 경우에 대비해야합니다.

이것은 모든 연결이 일시적이며 데이터베이스로 이동해야 할 때만 연결한다는 것을 의미합니다.

자세한 내용은 here을 참조하십시오. 여기에 사용 방법에 대한 샘플도 있습니다. 그것에 대해 알아야 할 주요 사항은 일회용 패턴을 사용한다는 것입니다.

//Notice the **using ** block 
using(SqlConnection conn = new SqlConnection(connString)) 
{ 
    conn.Open(); 
    //do something with the connection. 
    //as soon as the using block ends, the managed connection is disposed and released in the pool 
} 
+1

@thecoon을 여기에 붙여야합니다. 당신은 아마 이런 일을 할 수는 있지만 과도하거나 너무 약해서 기본 이슈를 해결하지 못한다. 즉, 기본적으로 연결을 유지하지 말아야한다는 것이다. –

+0

아참. :-) 네, 맞습니다. 그래서 연결을 배포하는 대신 연결 문자열을 배포 할 것입니다. – Fanda

+0

@Fanda : 그렇습니다. 당신은 싱글 톤 속성 클래스 또는 비슷한 것으로 저장할 수 있습니다. –

관련 문제