1

두 테이블 (부모 및 자식 레코드)에 대해 연속적으로 실행되도록 SQL Server 트랜잭션 복제를 설정했습니다. 구독자 끝에서 두 복제 된 테이블에 삽입 및 업데이트 트리거가 있습니다. 이 트리거는 모두 복제 된 테이블의 레코드를 쿼리하고 구독자 db의 다른 테이블에있는 레코드를 수정하는 동일한 코드를가집니다.SQL 트랜잭션 동시에 실행되는 트리거가있는 복제

내 질문은 .. 이러한 트리거가 동시에 실행됩니까? 한 테이블의 트리거가 다른 테이블의 트리거에 의해 수행 된 처리 작업을 중단하게됩니다.

답변

1

트리거는 업데이트를 적용하는 복제 에이전트의 컨텍스트에서 실행됩니다. 트랜잭션 의 많은 유지하면서,

-SubscriptionStreams [0|1|2|...64]

이 에 배포 에이전트 당 허용 된 연결 수는 가입자에 평행 의 변화 일괄 적용된다 에이전트는 connections의 구성 가능한 번호를 사용 단일 스레드 을 사용할 때 나타나는 특성. SQL Server 게시자의 경우 1에서 64 사이의 값 범위가 지원됩니다. 이 매개 변수는 게시자와 배포자가 SQL Server 2005 이상 버전에서 실행될 때만 지원되는 입니다. 이 매개 변수 은 지원되지 않으며 비 -SQL Server 가입자 또는 피어 투 피어 구독의 경우 0이어야합니다. 당신의 업데이트가 올바른 트랜잭션 의미가있는 경우 트랜잭션 의미가 제대로 복제 에이전트에 의해 유지되기 때문에

그들은 수없는 가입자에 충돌 (그들은 게시자에 충돌하지 않았으므로). 그렇다면 트랜잭션 경계 설계에 문제가 있으므로 도면 보드로 돌아가 올바른 트랜잭션 의미론을 사용하여 응용 프로그램을 설계함으로써 적절하게 해결해야합니다.

관련 문제