2011-07-28 3 views
0

.Net 4.0 및 SqlConnection/SqlCommand를 사용하여 미러링 설정이있는 2008 R2 SQL 서버에 연결합니다. ConnectionString은 장애 조치 파트너를 지정합니다.ConnectionTimeout을 사용하여 Sql ConnectionString에 대한 장애 조치 파트너 동작

ConnectionTimeout 설정이 클라이언트가 미러로 장애 조치 (failover)하는 능력에 어떤 영향을 미치는지 설명 할 수 있습니까? 즉, 장애 조치 서버로 이동하기 전에 항상 ConnectionTimeout을 대기합니까? 또는 장애 조치가 기본이되면 클라이언트는 즉시 ConnectionTimeout을 무시하고 장애 조치 연결로 전환합니다.

MSDN 관련 기사 Database Mirroring in SQL ServerMaking the Initial Connection to a Database Mirroring Session을 읽었으며 주 서버가 다운되었을 때 클라이언트가 자동으로 미러에 연결되어 있지만 ConnectionTimeout을 높게 지정하면 클라이언트가 장애 조치에 연결하는 데 걸릴 시간이 달라집니다. 섬기는 사람?

모든 연결 문자열에 ConnectionTimeout을 최소한 150 due to a known bug in ADO.NET으로 설정해야합니다. 그리고 우리는 엄청난 시간 초과가 응용 프로그램이 장애 조치를 적시에 처리 할 수있는 능력에 영향을 미칠 것이라고 우려하고 있습니다.

답변

1

기본 데이터베이스 서버를 사용할 수 없으면 ADO.Net은 즉시 장애 조치 파트너와 연락을 시도합니다. 기본 서버를 사용할 수 있지만 요청 된 데이터베이스가 미러링 된 상태 인 경우 ADO.Net 호출자는 주 서버 (연결 문자열 장애 조치 파트너와 일치하거나 일치하지 않을 수 있음)로 리디렉션됩니다. 기본 데이터베이스와 서버의 가용성을 의미하는 다른 모든 상황은 시간 초과 또는 오류를 기다립니다.

+0

감사합니다, 더 여기에 대해 쓴 제한 시간 값의 영향을받지 않습니다. 하지만 어디서나 명시 적으로 명시된 것을 보지 못했습니다. – BrandonAGr

2

시간 초과가 tcp 시간 초과를 처리 할만큼 충분히 커야합니다. 즉, SQL 연결이 충분히 길게 대기하지 않으면 TCP 연결이 시간 초과 될 때까지 기다리지 않고 다시 시도하고 시간 초과 한 후 다시 시도하십시오. 서버가 종료되었다고 결정합니다. 우리는 우리의 것을 적어도 60 초로 설정해야합니다.

나는 내가은 ConnectionTimeout는 시도가 포기되는 총 시간에 영향을 미치는 예외가 장애 조치 파트너를 사용하는 그것의 기능을 발생합니다 모인 것과, https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-o

관련 문제