ID 열 관리Manage Identity Columns

이 항목에서는 SQL Server 2017SQL Server 2017 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL에서 ID 열을 관리하는 방법에 대해 설명합니다.This topic describes how to manage identity columns in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 구독자 삽입이 게시자로 복제되는 경우 구독자와 게시자 모두에 동일한 ID 값이 할당되지 않도록 ID 열을 관리해야 합니다.When Subscriber inserts are replicated back to the Publisher, identity columns must be managed to avoid assignment of the same identity value at both the Subscriber and Publisher. 복제는 ID 범위를 자동으로 관리할 수 있으며, 사용자가 ID 범위 관리를 수동으로 처리하도록 선택할 수도 있습니다.Replication can manage identity ranges automatically or you can choose to manually handle identity range management. 복제에서 제공하는 ID 범위 관리 옵션에 대한 자세한 내용은 ID 열 복제를 참조하세요.For information about the identity range management options provided by replication, see Replicate Identity Columns.

항목 내용In This Topic

시작하기 전 주의 사항 Before You Begin

권장 사항 Recommendations

  • 둘 이상의 게시에 테이블을 게시하는 경우 두 게시에 대해 동일한 ID 범위 관리 옵션을 지정해야 합니다.When publishing a table in more than one publication, you must specify the same identity range management options for both publications. 자세한 내용은 데이터 및 데이터베이스 개체 게시에서 "둘 이상의 게시에 테이블 게시"를 참조하세요.For more information, see "Publishing Tables in More Than One Publication" in Publish Data and Database Objects.

  • 여러 테이블에서 사용할 수 있거나 테이블을 참조하지 않고 응용 프로그램에서 호출할 수 있는 자동으로 증가하는 번호를 만들려면 시퀀스 번호를 참조하세요.To create an automatically incrementing number that can be used in multiple tables or that can be called from applications without referencing any table, see Sequence Numbers.

SQL Server Management Studio 사용 Using SQL Server Management Studio

새 게시 마법사의 아티클 속성 -<Article> 대화 상자에 있는 속성 탭에서 ID 열 관리 옵션을 지정합니다.Specify an identity column management option on the Properties tab of the Article Properties -<Article> dialog box of the New Publication Wizard. 이 마법사를 사용하는 방법에 대한 자세한 내용은 게시 만들기를 참조하세요.For more information about using this wizard, see Create a Publication. 새 게시 마법사에서의 속성 설정은 다음과 같습니다.In the New Publication Wizard:

  • 게시 유형 페이지에서 병합 게시 또는 업데이트할 수 있는 구독이 있는 트랜잭션 게시 를 선택한 경우에는 자동 또는 ID 범위 수동 관리를 선택할 수 있습니다. 기본값인 ID 범위 자동 관리를 권장합니다.If you select Merge publication or Transactional publication with updating subscriptions on the Publication Type page, select automatic or manual identity range management (automatic, the default, is recommended). 테이블을 게시한 후에 이 속성은 수정할 수 없지만 다른 관련 속성은 수정할 수 있습니다.After the table is published, the property cannot be modified, but other related properties can be modified.

  • 다른 게시 유형을 선택한 경우에 ID 범위 관리는 수동으로 설정해야 합니다.If you select other publication types, identity range management should be set to manual.

    게시 속성 - <게시> 대화 상자에서 사용 가능한 아티클 속성 -<Article>속성 탭에서 ID 범위 및 임계값을 수정합니다.Modify identity ranges and thresholds on the Properties tab of the Article Properties -<Article>, which is available in the Publication Properties - <Publication> dialog box. 이 대화 상자에 액세스하는 방법은 View and Modify Publication Properties을 참조하세요.For more information about accessing this dialog box, see View and Modify Publication Properties.

ID 열 관리 옵션을 지정하려면To specify an identity column management option

  1. SQL ServerSQL Server 이전 버전의 SQL Server 2005SQL Server 2005를 실행하는 게시자의 경우 새 게시 마법사의 게시 유형 페이지에서 병합 게시 또는 업데이트할 수 있는 구독이 있는 트랜잭션 게시를 선택합니다.If the Publisher is running a version of SQL ServerSQL Server prior to SQL Server 2005SQL Server 2005, on the Publication Type page of the New Publication Wizard, select Merge publication or Transactional publication with updating subscriptions.

  2. 아티클 페이지에서 ID 열이 있는 테이블을 선택합니다.On the Articles page, select a table with an identity column.

  3. 아티클 속성을 클릭한 다음 선택한 테이블 아티클 속성 설정을 클릭합니다.Click Article Properties, and then click Set Properties of Highlighted Table Article.

  4. 아티클 속성 - <Article> 대화 상자 속성 탭의 ID 범위 관리 섹션에서 자동으로 ID 범위 관리 속성을 자동 또는 수동( SQL Server 2005SQL Server 2005 이상을 실행하는 게시자의 경우)으로 설정하거나 True 또는 False( SQL Server 2005SQL Server 2005의 이전에 나온 SQL ServerSQL Server 버전을 실행하는 게시자의 경우)로 설정합니다.On the Properties tab of the Article Properties - <Article> dialog box, in the Identity Range Management section, set the Automatically manage identity ranges property to Automatic or Manual (for Publishers running SQL Server 2005SQL Server 2005 or later), or True or False (for Publishers running a version of SQL ServerSQL Server prior to SQL Server 2005SQL Server 2005).

  5. 4단계에서 자동 또는 True 를 선택한 경우 다음 표를 참조하여 옵션 값을 입력합니다.If you selected Automatic or True in step 4, enter values for the options in the following table. 이러한 설정의 사용 방법은 ID 열 복제의 "ID 범위 할당" 섹션을 참조하세요.For more information on how these settings are used, see the "Assigning Identity Ranges" section of Replicate Identity Columns.

    옵션Option Value 설명Description
    게시자 범위 크기Publisher range size 범위 크기에 대한 정수 값(예: 20000)Integer value for range size (for example, 20000). ID 열 복제의 "ID 범위 할당" 섹션을 참조하세요.See the "Assigning Identity Ranges" section of Replicate Identity Columns.
    구독자 범위 크기Subscriber range size 범위 크기에 대한 정수 값(예: 10000)Integer value for range size (for example, 10000). ID 열 복제의 "ID 범위 할당" 섹션을 참조하세요.See the "Assigning Identity Ranges" section of Replicate Identity Columns.
    범위 임계값 비율Range threshold percentage 백분율 임계값의 정수 값(예: 90은 90%)Integer value for percent threshold (for example, 90 is equivalent to 90 percent). 새 ID 범위를 할당하기 전에 노드에 사용되는 전체 ID 값의 백분율입니다.Percent of total identity values used at a node before a new identity range is assigned.



    참고: 이 값은 지정은 해야 하지만 지연 업데이트 구독을 사용하는 구독자와 SQL Server CompactSQL Server Compact 또는 다른 SQL Server 에디션의 이전 버전을 실행하는 병합 게시 구독자에 의해서만 사용됩니다.Note: This value must be specified, but it is only used by: Subscribers using queued updating subscriptions; and Subscribers to merge publications running SQL Server CompactSQL Server Compact or previous versions of other SQL Server editions. 자세한 내용은 ID 열 복제의 "ID 범위 할당" 섹션을 참조하세요.For more information, see the "Assigning Identity Ranges" section of Replicate Identity Columns.
    다음 범위 시작 값Next range starting value 정수 값.Integer value. 읽기 전용입니다.Read-only. 다음 범위가 시작되는 값입니다.The value at which the next range will start. 예를 들어 현재 범위가 5001-6000이면 이 값은 6001이 됩니다.For example, if the current range is 5001-6000, this value will be 6001.
    최대 ID 값Maximum identity value 정수 값.Integer value. 읽기 전용입니다.Read-only. ID 열의 최대값입니다.The largest value for the identity column. 열의 기본 데이터 형식에 따라 결정됩니다.Determined by the base data type of the column.
    ID 증가값Increment 정수 값.Integer value. 읽기 전용입니다.Read-only. 각 삽입 작업마다 ID 열의 숫자가 증가 또는 감소되는 크기이며 일반적으로 1로 설정합니다.The amount by which the number in the identity column should increase or decrease for each insert: typically set to 1.
  6. 확인을 클릭합니다.Click OK.

테이블을 게시한 후 ID 범위 및 임계값을 수정하려면To modify identity ranges and thresholds after a table is published

  1. 게시 속성 - <Publication> 대화 상자의 아티클 페이지에서 ID 열이 포함된 테이블을 선택합니다.On the Articles page of the Publication Properties - <Publication> dialog box, select a table with an identity column.

  2. 아티클 속성을 클릭한 다음 선택한 테이블 아티클 속성 설정을 클릭합니다.Click Article Properties, and then click Set Properties of Highlighted Table Article.

  3. 아티클 속성 - <Article> 대화 상자 속성 탭의 ID 범위 관리 섹션에서 게시자 범위 크기, 구독자 범위 크기범위 임계값 비율 속성 중 하나 이상에 대해 값을 입력합니다.On the Properties tab of the Article Properties - <Article> dialog box, in the Identity Range Management section, enter values for one or more of the following properties: Publisher range size, Subscriber range size, and Range threshold percentage.

  4. 확인을 클릭합니다.Click OK.

  5. 게시 속성 - <게시> 대화 상자에서 확인을 클릭합니다.Click OK on the Publication Properties - <Publication> dialog box.

Transact-SQL 사용 Using Transact-SQL

복제 저장 프로시저를 사용하여 아티클이 작성될 때 ID 범위 관리 옵션을 지정할 수 있습니다.You can use replication stored procedures to specify identity range management options when an article is created.

트랜잭션 게시에 대한 아티클을 정의할 때 자동 ID 범위 관리를 설정하려면To enable automatic identity range management when defining articles for a transactional publication

  1. 게시 데이터베이스의 게시자에서 sp_addarticle을 실행합니다.At the Publisher on the publication database, execute sp_addarticle. 게시되는 원본 테이블에 하나의 ID 열이 있는 경우 @identityrangemanagementoption@identityrangemanagementoption값, @pub_identity_range에 게시자에 할당된 ID 값의 범위, @identity_range에 각 구독자에 할당된 ID 값의 범위, @threshold에서 ID 열을 관리하는 방법에 대해 설명합니다.If the source table being published has an identity column, specify a value of auto for @identityrangemanagementoption, the range of identity values assigned to the Publisher for @pub_identity_range, the range of identity values assigned to each Subscribers for @identity_range, and the percent of total identity values used before a new identity range is assigned for @threshold. 아티클을 정의하는 방법은 아티클 정의를 참조하세요.For more information about defining articles, see Define an Article.

    참고

    ID 열의 데이터 형식은 모든 구독자에 할당되는 ID의 전체 범위를 지원하기에 충분할 만큼 커야 합니다.Ensure that the data type of the identity column is large enough to support the total range of identities being assigned to all Subscribers.

트랜잭션 게시에 대한 아티클을 정의할 때 자동 ID 범위 관리를 해제하려면To disable automatic identity range management when defining articles for a transactional publication

  1. 게시 데이터베이스의 게시자에서 sp_addarticle을 실행합니다.At the Publisher on the publication database, execute sp_addarticle. @identityrangemanagementoption 값을 manual로 지정합니다.Specify a value of manual for @identityrangemanagementoption. 아티클을 정의하는 방법은 아티클 정의를 참조하세요.For more information about defining articles, see Define an Article.

  2. 구독자 업데이트에 대한 충돌 발생을 방지하려면 구독자에서 ID 아티클 열에 범위를 할당합니다.Assign ranges to identity article columns at the Subscriber to avoid generating conflicts for updating Subscribers. 자세한 내용은 ID 열 복제 항목에서 ID 범위 수동 관리를 위한 범위 할당 섹션을 참조하세요.For more information, see the section on assigning ranges for manual identity range management in the topic Replicate Identity Columns.

병합 게시에 대한 아티클을 정의할 때 자동 ID 범위 관리를 설정하려면To enable automatic identity range management when defining articles for a merge publication

  1. 게시 데이터베이스의 게시자에서 sp_addmergearticle을 실행합니다.At the Publisher on the publication database, execute sp_addmergearticle. 게시되는 원본 테이블에 하나의 ID 열이 있는 경우 @identityrangemanagementoption@identityrangemanagementoption값, @pub_identity_range에 서버 구독에 할당된 ID 값의 범위, @identity_range에 각 구독자에 할당된 ID 값의 범위, @threshold에서 ID 열을 관리하는 방법에 대해 설명합니다.If the source table being published has an identity column, specify a value of auto for @identityrangemanagementoption, the range of identity values assigned to a server subscription for @pub_identity_range, the range of identity values assigned to the Publisher and each client subscription for @identity_range, and the percent of total identity values used before a new identity range is assigned for @threshold. 새 ID 범위가 할당되는 시점에 대한 자세한 내용은 ID 열 복제 항목에서 ID 범위 할당을 참조하세요.For more information on when new identity ranges are assigned, see Assigning Identity Ranges in the topic Replicate Identity Columns. 아티클을 정의하는 방법은 아티클 정의를 참조하세요.For more information about defining articles, see Define an Article.

    참고

    특히 서버 구독이 있는 구독자의 경우 ID 열의 데이터 형식은 모든 구독자에 할당되는 ID의 전체 범위를 지원하기에 충분할 만큼 커야 합니다.Ensure that the data type of the identity column is large enough to support the total range of identities being assigned to all Subscribers, particularly for Subscribers with server subscriptions.

병합 게시에 대한 아티클을 정의할 때 자동 ID 범위 관리를 해제하려면To disable automatic identity range management when defining articles for a merge publication

  1. 게시 데이터베이스의 게시자에서 sp_addmergearticle을 실행합니다.At the Publisher on the publication database, execute sp_addmergearticle. @identityrangemanagementoption에 다음 값 중 하나를 지정합니다.Specify one of the following values for @identityrangemanagementoption:

    • manual - 구독자를 업데이트하려면 ID 범위를 수동으로 할당해야 합니다.manual - Identity ranges must be assigned manually for updating Subscribers.

    • none - 게시자의 ID 열이 구독자에서 ID 열로 정의되지 않습니다.none - Identity columns at the Publisher will not be defined as identity columns at the Subscriber.

      아티클을 정의하는 방법은 아티클 정의를 참조하세요.For more information about defining articles, see Define an Article.

  2. 구독자 업데이트에 대한 충돌 발생을 방지하려면 구독자에서 ID 아티클 열에 범위를 할당합니다.Assign ranges to identity article columns at the Subscriber to avoid generating conflicts for updating Subscribers.

스냅숏 또는 트랜잭션 게시의 기존 아티클에 대한 자동 ID 범위 관리 설정을 변경하려면To change automatic identity range management settings for an existing article in a snapshot or transactional publication

  1. 게시 데이터베이스의 게시자에서 sp_helparticle 을 실행하고 결과 집합에서 identityrangemanagementoption 의 값을 확인합니다.At the Publisher on the publication database, execute sp_helparticle and note the value of identityrangemanagementoption in the result set. 이 값이 0이면 자동 ID 범위 관리가 설정되지 않은 것입니다.If this value is 0, automatic identity range management is not enabled.

  2. 결과 집합의 identityrangemanagementoption 값이 1이면 다음과 같이 설정을 변경합니다.If the value of identityrangemanagementoption in the result set is 1, change the settings as follows:

    • 할당된 ID 범위를 변경하려면 게시 데이터베이스의 게시자에서 sp_changearticle 을 실행합니다.To change the assigned identity ranges, execute sp_changearticle at the Publisher on the publication database. @propertyidentity_range 또는 pub_identity_range 값을 지정하고 @value에 새 범위 값을 지정합니다.Specify a value of identity_range or pub_identity_range for @property and the new range value for @value.

    • 새 범위가 할당되는 임계값을 변경하려면 게시 데이터베이스의 게시자에서 sp_changearticle 을 실행합니다.To change the threshold at which new ranges are assigned, execute sp_changearticle at the Publisher on the publication database. @propertythreshold 값을 지정하고 @value에 새 임계값을 지정합니다.Specify a value of threshold for @property and the new threshold value for @value.

병합 게시의 기존 아티클에 대한 자동 ID 범위 관리 설정을 변경하려면To change automatic identity range management settings for an existing article in a merge publication

  1. 게시 데이터베이스의 게시자에서 sp_helpmergearticle 을 실행하고 결과 집합에서 identity_support 값을 확인합니다.At the Publisher on the publication database, execute sp_helpmergearticle and note the value of identity_support in the result set. 이 값이 0이면 자동 ID 범위 관리가 설정되지 않은 것입니다.If this value is 0, automatic identity range management is not enabled.

  2. 결과 집합의 identity_support 값이 1이면 다음과 같이 설정을 변경합니다.If the value of identity_support in the result set is 1, change the settings as follows:

    • 할당된 ID 범위를 변경하려면 게시 데이터베이스의 게시자에서 sp_changemergearticle 을 실행합니다.To change the assigned identity ranges, execute sp_changemergearticle at the Publisher on the publication database. @propertyidentity_range 또는 pub_identity_range 값을 지정하고 @value에 새 범위 값을 지정합니다.Specify a value of identity_range or pub_identity_range for @property and the new range value for @value.

    • 새 범위가 할당되는 임계값을 변경하려면 게시 데이터베이스의 게시자에서 sp_changemergearticle 을 실행합니다.To change the threshold at which new ranges are assigned, execute sp_changemergearticle at the Publisher on the publication database. @propertythreshold 값을 지정하고 @value에 새 임계값을 지정합니다.Specify a value of threshold for @property and the new threshold value for @value. 새 ID 범위가 할당되는 시점에 대한 자세한 내용은 ID 열 복제 항목에서 ID 범위 할당을 참조하세요.For more information on when new identity ranges are assigned, see Assigning Identity Ranges in the topic Replicate Identity Columns.

    • 자동 ID 범위 관리를 해제하려면 게시 데이터베이스의 게시자에서 sp_changemergearticle 을 실행합니다.To disable automatic identity range management, execute sp_changemergearticle at the Publisher on the publication database. @propertyidentityrangemanagementoption 값을 지정하고 @valuemanual 또는 none을 지정합니다.Specify a value of identityrangemanagementoption for @property and either manual or none for @value.

관련 항목:See Also

피어 투 피어 트랜잭션 복제 Peer-to-Peer Transactional Replication
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
ID 열 복제 Replicate Identity Columns