4

SQL Server 2014, Entity Framework 6.1.2, .net 프레임 워크 4.5, IIS 8, 미러링 모니터없이 미러를 높은 안전 모드로 미러링합니다.EF6을 사용하는 SqlServer db 미러 페일 오버가 미러에만 적용됩니다.

나는 다음과 같은 연결 문자열

Data Source=A;Failover Partner=B;Initial Catalog=DB;Integrated Security=False;User Id=sa;Password=Password;MultipleActiveResultSets=true;Connect Timeout=10 

이 시작이 : A = 원리, B는 = 미러
내가 A에서 B로 (미러에 원리) 수동 장애 조치를 수행 할 때, 그것은 실패 연결을 열 수 없습니다 - Erro 40.

다음으로 시작 : A = Mirror, B = Principle
수동 장애 조치가 작동합니다.
지금 : A = Principle, B = Mirror
그런 다음 사이트를 다시 시작하지 않고 오류 40을 다시 페일 오버합니다.
IIS를 다시 시작하면 다시 정상적으로 작동합니다.

while (!_exitFlag) 
{ 
    using (var context = new EntityContext()) 
    { 
     var result = context.Foos.Count(); 
    } 
} 

어떤 아이디어 :

여기에 연결을 테스트 할 수있는 코드는?

답변

2

따라서 클라이언트가 다른 LAN에 참여하기 때문에 SQL Server에 등록 된 장애 조치 파트너는 클라이언트에서 확인할 수 없습니다.

SELECT DB_NAME(database_id) AS 'DatabaseName', mirroring_partner_instance 
FROM sys.database_mirroring WHERE mirroring_guid IS NOT NULL; 

.net 응용 프로그램이 원칙에 연결될 때 장애 조치 파트너의 "이름"을 제공합니다. 이 이름은 .net 응용 프로그램이 앉아있는 클라이언트에서 "pingable"이어야합니다.

ado.net이 "Data Soruce"값에 지정된 서버에 연결하면 데이터베이스에서 장애 조치 (failover) 파트너를 검색하고 하나의 연결 문자열을 무시합니다. (위대한 **** 보내기 작업 마이크로 소프트.)

내가 왜 역방향 작품을 보지 못했지만 분명히 어디서 혼자 라인, 연결 문자열의 "데이터 원본"서버가 다시 확인됩니다.

이 기사에서 아이디어를 얻었다 : (. 사용자 정의 포트에 DB 거울을 검색 할 때 기본적으로이 문제가 더 눈에 띄게 설명) http://blogs.msdn.com/b/spike/archive/2010/12/15/running-a-database-mirror-setup-with-the-sqlbrowser-service-off-may-produce-unexpected-results.aspx를 지금 난 또 다른 질문으로 그것을 따랐다

편집 - 문제를 해결하기 위해 직면 : https://dba.stackexchange.com/questions/87607/set-up-sql-server-db-mirror-specifying-ip-address-for-mirroring-partner-instance