2

주 데이터베이스에서 내 장애 조치 데이터베이스로 SQL Server 트랜잭션 복제를 사용하는 경우가 있습니다. 기본 사이트가 있고 장애 조치 웹 사이트에서 장애 조치 데이터베이스를 사용하고 있습니다.트랜잭션 복제 활성화시 엔티티 프레임 워크 모델의 문제점

두 웹 사이트 (엔티티 프레임 워크 사용)는 동일합니다 (따라서 데이터베이스도 잘만).

제 문제는 복제가 활성화되어있는 경우 장애 조치 웹 사이트에서 일부 작동이 중단된다는 것입니다. 복제를 비활성화하면 정상적으로 작동합니다.

내 장애 조치 웹 사이트의 EntityModel과 복제에 노출 될 때 데이터베이스 간의 동시성 문제가 있습니다.

비슷한 문제가 발생 했습니까? 트랜잭션 복제 + 엔티티 프레임 워크 경험이있는 사람은 누구입니까? 여기

내가 얻을 예외 :

at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) 
at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) 
at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) 
at System.Data.Objects.ObjectContext.SaveChanges() 
at Library.XXXXEntities.Context_SavingChanges(Object sender, EventArgs e) 
in C:\SVN\Branches\Prod - 1.68.7\Library\LINQ\Audit.cs:line 38 
at System.Data.Objects.ObjectContext.OnSavingChanges() 
at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) 
at System.Data.Objects.ObjectContext.SaveChanges() at Library.Provider.Save() 
in C:\SVN\Branches\Prod - 1.68.7\Library\XXXX.Provider.cs:line 57 
at XXXX.mnuExportGeneric.RecreatePositionsToBeUnique() 
at XXXX.mnuExportGeneric.Export(Int32 programId, DirectoryInfo directoryDestination, Boolean exportInventory, Int32 CurrencyListID, Int32 configurationId, Boolean subFolder) 
at XXXX.mnuExport.Export(Int32 ProgramId, String TempExportFolder, String ExportFolder, TreeView treeViewErreurs, Int32 CurrencyListID, Boolean exportInventory, Int32[] configurationsId) 

매핑에 문제가 발생한 솔기하지만, 트랜잭션 복제가 활성화되어있는 경우에만 사용할 수 있습니다.

업데이트 : 응용 프로그램 환경에서 완전히 벗어났습니다. 복제본이 "활성"이면 불법 복제가 될 때 단순히 내 장애 조치 데이터베이스의 테이블에 새로운 행을 삽입하려고했습니다. Tomorow 나는 완전히 제거 된 복제본으로 시도 할 것입니다 ... 또는 그와 같은보다 과감한 변화가 ...

Thanks!

+0

왜 장애 조치 응용 프로그램에서 변경 사항을 실행합니까? 이 변경 사항은 기본 데이터베이스에 다시 반영되지 않습니다. 어떤 유형의 예외가 발생하며 엔티티는 어떤 동시성 검사를 사용합니까? –

+0

모든 것이 올바르게 작동하는지 확인하기위한 안전 조치로 장애 조치 응용 프로그램에서 변경 사항을 실행 중입니다. 시작하는 작업은 표준 "비즈니스"작업입니다. 내 엔티티는 기본 동시성 검사 (AppendOnly라고 생각합니다)를 사용하고 있습니다. –

답변

1

이것은 아마도 EF에서는 문제가 아니지만 복제 설정에 문제가 있습니다.

SQL 서버는 변경이 모든 노드에서 할 수 복제를 허용하지 않습니다, 그러나 이것은 참조 엔터프라이즈 버전이 필요합니다 http://technet.microsoft.com/en-us/library/ms151196.aspx

그것은 당신이 읽기 전용 복제본을 업데이트하려고하는 것을 할 수있다.

+0

사실, 필자는 계속 읽고 있으며 Transactionnal 복제는 복제 된 데이터베이스를 읽기 전용으로 만듭니다. 복제 프로세스에서 사용하는 특수 저장 프로 시저를 보았습니다. 나는 그것이 합리적이라고 생각한다. 감사! –