다음을 통해 공유


방법: ID 열 관리(복제 Transact-SQL 프로그래밍)

구독자 삽입이 게시자로 복제되는 경우 구독자와 게시자 모두에 동일한 ID 값이 할당되지 않도록 ID 열을 관리해야 합니다. 복제는 ID 범위를 자동으로 관리할 수 있으며, 사용자가 ID 범위 관리를 수동으로 처리하도록 선택할 수도 있습니다. 복제 저장 프로시저를 사용하여 아티클이 작성될 때 ID 범위 관리 옵션을 지정할 수 있습니다. 복제에서 제공하는 ID 범위 관리 옵션에 대한 자세한 내용은 ID 열 복제를 참조하십시오.

[!참고]

둘 이상의 게시에 테이블을 게시하는 경우 두 게시에 대해 동일한 ID 범위 관리 옵션을 지정해야 합니다. 자세한 내용은 데이터 및 데이터베이스 개체 게시에서 "둘 이상의 게시에 테이블 게시"를 참조하십시오.

트랜잭션 게시에 대한 아티클을 정의할 때 자동 ID 범위 관리를 설정하려면

  • 게시 데이터베이스의 게시자에서 sp_addarticle을 실행합니다. 게시되는 원본 테이블에 하나의 ID 열이 있는 경우 @identityrangemanagementoptionauto 값, @pub_identity_range에 게시자에 할당된 ID 값의 범위, @identity_range에 각 구독자에 할당된 ID 값의 범위, @threshold에 새 ID 범위가 할당되기 전까지 사용되는 전체 ID 값의 비율을 지정합니다. 아티클을 정의하는 방법은 방법: 아티클 정의(복제 Transact-SQL 프로그래밍)를 참조하십시오.

    [!참고]

    ID 열의 데이터 형식은 모든 구독자에 할당되는 ID의 전체 범위를 지원하기에 충분할 만큼 커야 합니다.

트랜잭션 게시에 대한 아티클을 정의할 때 자동 ID 범위 관리를 해제하려면

  1. 게시 데이터베이스의 게시자에서 sp_addarticle을 실행합니다. @identityrangemanagementoptionmanual 값을 지정합니다. 아티클을 정의하는 방법은 방법: 아티클 정의(복제 Transact-SQL 프로그래밍)를 참조하십시오.

  2. 구독자 업데이트에 대한 충돌 발생을 방지하려면 구독자에서 ID 아티클 열에 범위를 할당합니다. 자세한 내용은 ID 열 복제 항목에서 수동 ID 범위 관리를 위한 범위 할당 섹션을 참조하십시오.

병합 게시에 대한 아티클을 정의할 때 자동 ID 범위 관리를 설정하려면

  • 게시 데이터베이스의 게시자에서 sp_addmergearticle을 실행합니다. 게시되는 원본 테이블에 하나의 ID 열이 있는 경우 @identityrangemanagementoptionauto 값, @pub_identity_range에 서버 구독에 할당된 ID 값의 범위, @identity_range에 게시자 및 각 클라이언트 구독에 할당된 ID 값의 범위, @threshold에 새 ID 범위가 할당되기 전까지 사용되는 전체 ID 값의 비율을 지정합니다. 새 ID 범위가 할당되는 시점에 대한 자세한 내용은 ID 열 복제 항목에서 ID 범위 할당을 참조하십시오. 아티클을 정의하는 방법은 방법: 아티클 정의(복제 Transact-SQL 프로그래밍)를 참조하십시오.

    [!참고]

    특히 서버 구독이 있는 구독자의 경우 ID 열의 데이터 형식은 모든 구독자에 할당되는 ID의 전체 범위를 지원하기에 충분할 만큼 커야 합니다.

병합 게시에 대한 아티클을 정의할 때 자동 ID 범위 관리를 해제하려면

  1. 게시 데이터베이스의 게시자에서 sp_addmergearticle을 실행합니다. @identityrangemanagementoption에 다음 값 중 하나를 지정합니다.

    • manual - 구독자를 업데이트하려면 ID 범위를 수동으로 할당해야 합니다.

    • none - 게시자의 ID 열이 구독자에서 ID 열로 정의되지 않습니다.

    아티클을 정의하는 방법은 방법: 아티클 정의(복제 Transact-SQL 프로그래밍)를 참조하십시오.

  2. 구독자 업데이트에 대한 충돌 발생을 방지하려면 구독자에서 ID 아티클 열에 범위를 할당합니다.

스냅숏 또는 트랜잭션 게시의 기존 아티클에 대한 자동 ID 범위 관리 설정을 변경하려면

  1. 게시 데이터베이스의 게시자에서 sp_helparticle을 실행하고 결과 집합에서 identityrangemanagementoption의 값을 확인합니다. 이 값이 0이면 자동 ID 범위 관리가 설정되지 않은 것입니다.

  2. 결과 집합의 identityrangemanagementoption 값이 1이면 다음과 같이 설정을 변경합니다.

    • 할당된 ID 범위를 변경하려면 게시 데이터베이스의 게시자에서 sp_changearticle을 실행합니다. @propertyidentity_range 또는 pub_identity_range 값을 지정하고 @value에 새 범위 값을 지정합니다.

    • 새 범위가 할당되는 임계값을 변경하려면 게시 데이터베이스의 게시자에서 sp_changearticle을 실행합니다. @propertythreshold 값, @value에 새 임계값을 지정합니다.

병합 게시의 기존 아티클에 대한 자동 ID 범위 관리 설정을 변경하려면

  1. 게시 데이터베이스의 게시자에서 sp_helpmergearticle을 실행하고 결과 집합에서 identity_support 값을 확인합니다. 이 값이 0이면 자동 ID 범위 관리가 설정되지 않은 것입니다.

  2. 결과 집합의 identity_support 값이 1이면 다음과 같이 설정을 변경합니다.

    • 할당된 ID 범위를 변경하려면 게시 데이터베이스의 게시자에서 sp_changemergearticle을 실행합니다. @propertyidentity_range 또는 pub_identity_range 값을 지정하고 @value에 새 범위 값을 지정합니다.

    • 새 범위가 할당되는 임계값을 변경하려면 게시 데이터베이스의 게시자에서 sp_changemergearticle을 실행합니다. @propertythreshold 값, @value에 새 임계값을 지정합니다. 새 ID 범위가 할당되는 시점에 대한 자세한 내용은 ID 열 복제 항목에서 ID 범위 할당을 참조하십시오.

    • 자동 ID 범위 관리를 해제하려면 게시 데이터베이스의 게시자에서 sp_changemergearticle을 실행합니다. @propertyidentityrangemanagementoption 값을 지정하고 @valuemanual 또는 none을 지정합니다.