방법: 피어 투 피어 트랜잭션 복제에 대한 충돌 감지 구성(복제 Transact-SQL 프로그래밍)
피어 투 피어 복제에는 토폴로지에서 충돌을 감지할 수 있는 옵션이 포함되어 있습니다. 자세한 내용은 피어 투 피어 복제에서 충돌 검색를 참조하십시오.
충돌 감지를 사용하려면 모든 노드에서 SQL Server 2008 이상 버전이 실행되어야 하고 모든 노드에 대해 충돌 감지를 사용하도록 설정되어 있어야 합니다. 토폴로지를 구성할 때, 또는 토폴로지가 구성된 후에 충돌 감지 사용을 설정할 수 있습니다. 기존 토폴로지에 충돌 감지를 사용하도록 설정하기 위해 토폴로지를 정지할 필요는 없습니다. 단, 모든 노드가 충돌 감지를 사용하도록 설정되기 전에 충돌하는 변경 내용이 발생하는 경우 복제에서 이러한 충돌이 감지되지 않을 수도 있습니다. 토폴로지를 구성하는 방법은 방법: 피어 투 피어 트랜잭션 복제 구성(복제 Transact-SQL 프로그래밍)을 참조하십시오.
[!참고]
피어 투 피어 복제를 구성할 때는 각 노드에 대해 ID를 지정합니다. 이 ID는 토폴로지 내의 모든 노드에서 고유해야 하며 MSpeer_originatorid_history 시스템 테이블의 originator_id 열에 저장됩니다. 노드가 토폴로지에서 제거되어도 ID는 기록 테이블에 계속 보관됩니다. ID를 보관하는 이유는 토폴로지에 있는 제거된 노드의 복제본이 변경될 경우 잘못된 충돌이 발생하는 것을 방지하기 위한 것입니다. 기존 ID를 새 노드에 다시 사용하려면 먼저 모든 노드의 MSpeer_originatorid_history 테이블에서 해당 ID를 수동으로 삭제해야 합니다. 노드의 ID를 제거하기 전에 sp_requestpeerresponse를 실행하여 해당 노드에서 수행된 모든 변경 내용이 복제되었는지 확인하십시오.
토폴로지 구성 중에 충돌 감지 사용을 설정하려면
sp_addpublication을 사용하여 각 노드에서 게시를 만드는 경우
@p2p\_conflictdetection에 true 값을 지정합니다.
@p2p\_originator\_id에 0이 아닌 양의 정수를 지정합니다. 토폴로지에 사용된 ID는 사용할 수 없습니다. 이미 사용된 ID 목록을 보려면 sp_help_peerconflictdetection을 실행합니다.
@p2p\_continue\_onconflict에 값을 지정합니다. false 값을 지정하는 것이 좋습니다. 자세한 내용은 피어 투 피어 복제에서 충돌 검색의 "충돌 처리"를 참조하십시오.
토폴로지 구성 후에 충돌 감지를 사용하도록 설정하려면
이 단계에서는 토폴로지가 A, B 및 C의 3개 노드로 구성되어 있다고 가정합니다. 노드 A에서 sp_configure_peerconflictdetection을 실행합니다.
@publication에 게시 이름을, @action에 enable 값을 지정합니다.
@p2p\_originator\_id에 0이 아닌 양의 정수를 지정합니다. 토폴로지에 사용된 ID는 사용할 수 없습니다. 이미 사용된 ID 목록을 보려면 sp_help_peerconflictdetection을 실행합니다.
@continue\_onconflict에 값을 지정합니다. false 값을 지정하는 것이 좋습니다. 자세한 내용은 피어 투 피어 복제에서 충돌 검색의 "충돌 처리"를 참조하십시오.
노드 B와 노드 C에 대해 1단계를 반복합니다.
노드 중 하나에서 sp_help_peerconflictdetection을 실행합니다. @publication에 게시 이름을 지정합니다. 결과 설정을 검토하여 모든 노드에서 충돌 감지가 사용하도록 설정되고, 각 노드가 고유한 송신자 ID 값을 가지고 있는지 확인합니다.
충돌 감지를 사용하지 않으려면
- 토폴로지의 각 노드에 대해 sp_configure_peerconflictdetection을 실행합니다. @publication에 게시 이름을, @action에 disable 값을 지정합니다.