NOT FOR REPLICATION으로 제약 조건, ID 및 트리거 제어
경우에 따라 복제 토폴로지의 사용자 작업을 에이전트 작업과 다르게 처리하는 것이 더 적합할 수 있습니다. 예를 들어 사용자가 게시자에서 삽입한 행이 테이블의 CHECK 제약 조건을 만족한다면 복제 에이전트가 구독자에서 행을 삽입할 때 동일한 제약 조건을 적용할 필요가 없습니다. NOT FOR REPLICATION 옵션을 사용하면 복제 에이전트가 작업을 수행할 때 다음 데이터베이스 개체를 다르게 처리하도록 지정할 수 있습니다.
FOREIGN KEY 제약 조건
복제 에이전트가 삽입, 업데이트 또는 삭제 작업을 수행할 때 FOREIGN KEY 제약 조건은 적용하지 않습니다.
CHECK 제약 조건
복제 에이전트가 삽입, 업데이트 또는 삭제 작업을 수행할 때 CHECK 제약 조건은 적용하지 않습니다.
ID 열
복제 에이전트가 삽입 작업을 수행할 때 ID 열 값은 증가하지 않습니다.
트리거
복제 에이전트가 삽입, 업데이트 또는 삭제 작업을 수행할 때 트리거를 실행하지 않습니다.
테이블이 게시될 때 스키마 옵션은 구독 데이터베이스에서 개체가 생성되는 방식을 제어합니다. 기본 스키마 옵션은 게시에 따라 달라집니다. 구독 데이터베이스에서 FOREIGN KEY 제약 조건 및 CHECK 제약 조건이 생성되도록 옵션을 지정한 경우 NOT FOR REPLICATION 옵션이 설정됩니다. 업데이트할 수 있는 구독을 지원하는 병합 게시 및 트랜잭션 게시의 ID 열을 복제할 때도 NOT FOR REPLICATION 옵션을 설정합니다. ID 열 복제에 대한 자세한 내용은 ID 열 복제를 참조하십시오.
대부분의 경우 기본 설정이 적합하지만 응용 프로그램에서 다른 동작이 필요하면 설정을 변경할 수 있습니다. 주로 고려할 대상은 트리거입니다. 예를 들어 NOT FOR REPLICATION 옵션이 설정된 INSERT 트리거를 정의할 경우 사용자가 삽입한 모든 내용이 이 트리거를 발생시키지만 복제 에이전트에서 삽입한 내용은 트리거를 발생시키지 않습니다. 다음과 같이 추적 테이블에 데이터를 삽입하는 트리거를 고려해 보십시오. 사용자가 처음에 행을 삽입하면 트리거가 발생되고 추적 테이블에 행이 입력되어야 하지만 데이터가 구독자로 복제되면 추적 테이블에 불필요한 행이 삽입되게 되므로 트리거가 발생되지 않아야 합니다.
NOT FOR REPLICATION 옵션을 지정하려면
다음과 같은 방법으로 NOT FOR REPLICATION 옵션을 지정할 수 있습니다.
복제 스키마 옵션을 사용합니다. 자세한 내용은 방법: 스키마 옵션 지정(SQL Server Management Studio) 및 방법: 스키마 옵션 지정(복제 Transact-SQL 프로그래밍)을 참조하십시오.
다음과 같은 경우 Transact-SQL 구문 또는 Microsoft SQL Server Management Studio에서 직접 지정할 수 있습니다.
게시 데이터베이스에서 개체를 만들거나 수정합니다.
구독 데이터베이스에서 개체를 만들거나 수정합니다. 일반적으로 스냅숏 없이 구독을 초기화하는 경우에만 복제를 사용하지 않고 수동으로 개체를 만듭니다.
자세한 내용은 아래의 항목을 참조하십시오.