문제

데이터베이스 미러링을 설정한 후 이것을 사용했습니다. connectionstring 연결하려면:

    Data Source={0};Failover Partner={1};Initial Catalog=AdventureWorks;
    Integrated Security=True;

데이터베이스에 일부 데이터를 추가한 후 주 서버를 종료하여 미러 서버가 주 서버가 됩니다.연결을 다시 열면 다음 오류가 발생합니다.

    System.Data.SqlClient.SqlException: A transport-level error has 
occurred when sending the request to the server. (provider: Shared Memory 
Provider, error: 0 - No process is on the other end of the pipe.)

연결 문자열에 장애 조치 파트너가 지정되어 있으면 ADO.NET이 대신 작업을 수행할 것이라고 생각했습니다.그럼 이제 어떻게 해야 할까요?

도움이 되었습니까?

해결책

다행히도이 문제를 해결했습니다. 내가해야 할 일은 ClearPool 방법을 호출하는 것입니다.

SqlConnection.ClearPool(conn);

이 메소드는 연결 풀을 지 웁니다. 그런 다음 문제가 사라졌습니다. 나는 그것에 너무 만족합니다.

당신의 지원에 감사드립니다. :디

다른 팁

저는 .NET에 대한 전문가는 아니지만 장애 조치를 처리하려면 SQL Native Client (SQLNCLI)가 필요합니다. "ado.net"은 sqloledb 일 수 있습니다

Windows Server 2003까지 최소한 기본적으로 설치되지 않습니다. 독립형 또는 SQL 클라이언트 도구의 일부이므로 SQLOLEDB를 사용하고 있다고 생각합니다.

주 구성원을 종료한 후 장애 조치가 실제로 주 구성원이 되었는지 확인했나요?SQL Server에 자동 장애 조치가 없으면 미러는 여전히 미러입니다.

충분한 시간 초과 세트가 없으면 이것이 일어날 것임을 발견했습니다.

https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-goes-o

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