병합 아티클의 처리 순서 지정
Microsoft SQL Server 2005 에서는 병합 게시를 위한 아티클의 기본 처리 순서를 재지정할 수 있습니다. 트리거를 통해 참조 무결성을 정의하고 이러한 트리거가 특정 순서로 발생해야 할 경우 이러한 작업이 유용할 수 있습니다.
아티클의 처리 순서를 지정하려면
- 복제 Transact-SQL 프로그래밍: How to: Specify Processing Order of Merge Table Articles (Replication Transact-SQL Programming)
처리 순서 결정 방식
병합 동기화 중 아티클은 기본적으로 기본 테이블에 정의된 DRI(선언적 참조 무결성) 제약 조건을 포함하여 개체 간 종속 관계에 필요한 순서대로 처리됩니다. 아티클 처리 시 테이블에 변경 내용을 열거한 다음 이들 변경 내용을 적용합니다. DRI가 없지만 조인 필터 또는 논리적 레코드가 테이블 아티클 사이에 존재할 경우 아티클은 필터 및 논리적 레코드에 필요한 순서대로 처리됩니다. DRI, 조인 필터, 논리적 레코드 또는 기타 종속 관계를 통해 다른 아티클과 관련되어 있지 않은 아티클은 sysmergearticles(Transact-SQL) 시스템 테이블에서의 아티클 애칭에 따라 처리됩니다.
SalesOrderHeader 테이블에는 기본 키 열 SalesOrderID가 있고 SalesOrderDetail 테이블에는 해당 외래 키 열 SalesOrderID가 있는 SalesOrderHeader 및 SalesOrderDetail 테이블을 포함하는 게시가 있다고 가정합니다. 이 게시를 동기화할 때 병합 복제에서 SalesOrderHeader에 새 행을 삽입한 다음 SalesOrderDetail에 연결된 행을 삽입하여 외래 키 위반을 방지합니다. 마찬가지로 SalesOrderDetail에서 행을 삭제한 다음 SalesOrderHeader에서 연결된 행을 삭제합니다.
그러나 일부 응용 프로그램에서는 DRI가 아닌 응용 프로그램 수준에서나 데이터베이스 트리거를 통해 참조 무결성이 적용됩니다. DRI 대신 위에서 설명한 게시를 제공한 경우 SalesOrderDetail 테이블에는 삽입을 허용하기 전에 SalesOrderHeader 테이블에 연결된 행이 존재하도록 하는 삽입 트리거가 있을 수 있습니다. SalesOrderHeader에는 삭제를 허용하기 전에 SalesOrderDetail에 연결된 행이 없도록 하는 삭제 트리거가 있을 수 있습니다. 병합 복제는 트리거가 발생될 때까지 트리거의 결과를 확인할 수 없으므로 아티클의 처리 순서를 결정할 때 트리거를 고려하지 않습니다. 마찬가지로 복제는 응용 프로그램 수준에서 정의된 제약 조건을 고려할 수 없습니다.
참조 무결성이 트리거를 통해서 또는 응용 프로그램 수준에서 유지 관리되는 경우 아티클이 처리되는 순서를 지정해야 합니다. 트리거가 있는 예제에서 아티클 순서는 삽입 순서에 따라 지정되므로 SalesOrderDetail 전에 SalesOrderHeader 테이블이 처리되도록 지정합니다. 병합 복제는 삭제 순서를 자동으로 반대로 바꿉니다. 병합 에이전트는 제약 조건 위반이 발생해도 아티클을 계속 처리하고 다른 아티클이 처리된 후 실패한 작업을 모두 다시 시도하므로 병합 복제는 아티클 순서를 지정하지 않아도 실패하지 않습니다. 아티클 순서를 지정하면 다시 시도 및 다시 시도와 연결된 추가 처리 작업이 실행되지 않도록 할 수 있습니다. 헤더 레코드 전에 정보 레코드가 처리되도록 하는 등 순서를 잘못 지정하면 병합 복제는 성공할 때까지 처리를 다시 시도합니다.
참고 항목
개념
병합 복제를 위한 아티클 옵션
논리적 레코드를 사용하여 관련된 행의 변경 내용을 그룹화
조인 필터