문제

나는 두 Microsoft SQL2005 데이터베이스 설정에서 실패을 통해 시나리오이다.응용 프로그램을 연결 문자열에"장애 조치 파트너"연결에 지정된 문자열입니다.

현재 라이브 데이터베이스의 실패를 통해 슬레이브 데이터베이스,거기에 작은 기간 동안 사용자가를 얻을 수 있습니다 따라.SqlException 메시지와 함께"기존의 연결에 의해 강제로 끊어졌습니다 원격 호스트".

이 때문에 주로 속도는 데이터베이스는 계속해서 실패하는 다른 뭔가가 있는 것을 방지하기 위해 수행 할 수 있습니다 이러한 오류?

도움이 되었습니까?

해결책

맞습니다 : 데이터베이스가 실패하는 데 걸리는 시간과 관련이 있습니다.

동기 미러링 장애 조치 타임 라인은 다음과 같습니다.

  1. 기본 서버 A는 모든 연결을 종료하고 닫습니다. 이 시점부터 서버 A에 연결하려는 모든 클라이언트는 연결을 강제로 닫게됩니다.
  2. 기본 서버 A는 로그가 보조 서버 B와 완전히 동기화되어 있는지 확인합니다.
  3. 서버 B의 SQL 서비스가 시작됩니다.
  4. 서버 B의 SQL 서비스는 연결을 수락하기 시작하며 그 시점에서 클라이언트가 다시 연결할 수 있습니다.

서버가 아무리 빨라도 연결이 폭격되는 간단한 (최소 1 초) 기간이있을 것입니다. Steven Lowe가 말했듯이, 당신은 그 예외를 가두고, 기다렸다가 다시 시도해야합니다. 앱이 더 큰 트랜잭션의 일부로 여러 쿼리를 연속으로 발행하면 거래가 실패 할 수 있습니다.

다른 팁

경고 : 몇 년 전에 'Failover Partner'옵션을 사용할 수 없었습니다.

우리는 Connect-Lost 예외 (몇 가지 다른 맛)를 덫에 걸리고 몇 초 동안 기다렸다가 다시 시도해야했습니다. 이를 위해서는 모든 데이터베이스 작업이 대기중인 논리를 자동화하기 위해 래퍼가 필요했습니다. 이로 인해 많은 작업이 아니었고 상당히 편리한 것으로 판명되었습니다. 오류 코드와 예외 유형을 검사하고 작업을 안전하게 재 시도 할 수 있는지 여부에 대한 의사 결정 테이블을 만들기위한 노력이 진행되었습니다.

이로 인해 응용 프로그램를 사용하면 기존의 연결에 연결 수영장도 있습니다.만 이 오류가 발생한 후 응용 프로그램이 수영장 얻을,삭제하고 새로운 연결을 사용하여 장애 조치 상자입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top