SQL Server 2005를 사용하는 응용 프로그램에서 두 테이블을 사용하고 있습니다. 테이블 A와 테이블 B를 호출 해 봅니다. 자동 생성 된 정수 ID 인 표 A의 기본 키 열을 참조하는 외래 키 제약 조건이 표 B에 정의되어 있습니다. 내가하려고 할 때 지금이 트랜잭션을 실패 다른 SQL 서버 2005 게시자와 구독자 모두 병합 복제 (연속)을 만들려고 해요 때까지 모두가 잘 작동SQL Server 병합 복제로 인해 외부 키 오류가 발생합니다.
Start transaction
Insert a row to table A
Retrieve the last-generated ID ("SELECT @@IDENTITY ... ")
Insert data to table B, using this ID
Commit
: 나는 다음과 같은 간단한 트랜잭션을 실행하는거야 때문에 외래 키 제약 조건의 실패, 테이블 B에 데이터를 삽입 :
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_TableB_TableA". The conflict occurred in database "MyDB", table "TableA", column 'ID'.
내가 그것을 병합 복제를 제거한 후, 그러나 테이블 A에 데이터를 삽입 한 후 투입에 의해 작동하게 할 수 없습니다, 모든했다. 데이터베이스 코드는 ADO를 사용하여 C++로 작성됩니다.
복제가 트랜잭션을 방해합니까? 가능한 다른 설명?
고마워요! 당신의 포인트에 대해서 - 1. 자동 ID 관리를 사용하고 있습니다. 어쨌든, 활동은 매우 희박합니다. PK 충돌이 근본 원인이라고 생각하지 않습니다. 2. (두 서버 모두에서) 외래 키에 "NOT FOR REPLICATION"속성을 적용했지만 상황을 변경하지는 않았습니다. – Itaypk