구독 다시 초기화Reinitialize a Subscription

이 항목에서는 SQL Server 2017SQL Server 2017 , SQL Server Management StudioSQL Server Management Studio또는 RMO(복제 관리 개체)를 사용하여 Transact-SQLTransact-SQL에서 구독을 다시 초기화하는 방법에 대해 설명합니다.This topic describes how to reinitialize a subscription in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO). 각 게시를 다시 초기화하도록 표시하여 다음 동기화 중에 새 스냅숏을 적용할 수 있습니다.Individual subscriptions can be marked for reinitialization so that a new snapshot is applied during the next synchronization.

항목 내용In This Topic

SQL Server Management Studio 사용 Using SQL Server Management Studio

구독을 다시 초기화하는 프로세스는 두 부분으로 구성되어 있습니다.Reinitializing a subscription is a two-part process:

  1. 게시에 대한 단일 구독이나 모든 구독을 다시 초기화하도록 표시 합니다.A single subscription or all subscriptions to a publication are marked for reinitialization. MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studio로컬 게시 폴더와 로컬 구독 폴더에서 사용할 수 있는 구독 다시 초기화 대화 상자에서 다시 초기화할 구독을 표시합니다.Mark subscriptions for reinitialization in the Reinitialize Subscription(s) dialog box, which is available from the Local Publications folder and the Local Subscriptions folder in MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studio. 또한 모든 구독 탭 및 복제 모니터의 게시 노드에서 구독을 표시할 수 있습니다.You can also mark subscriptions from the All Subscriptions tab and the publications node in Replication Monitor. 복제 모니터를 시작하는 방법은 복제 모니터 시작을 참조하세요.For information about starting Replication Monitor, see Start the Replication Monitor. 구독을 다시 초기화하도록 표시할 때는 다음과 같은 옵션을 선택할 수 있습니다.When you mark a subscription for reinitialization, you have the following options:

    현재 스냅숏 사용Use the current snapshot
    다음에 배포 에이전트 또는 병합 에이전트가 실행될 때 현재 스냅숏을 구독자에 적용하려면 이 옵션을 선택합니다.Select to apply the current snapshot to the Subscriber the next time the Distribution Agent or Merge Agent runs. 유효한 스냅숏이 없으면 이 옵션을 선택할 수 없습니다.If there is no valid snapshot available, this option cannot be selected.

    새 스냅숏 사용Use a new snapshot
    새 스냅숏으로 구독을 다시 초기화하려면 이 옵션을 선택합니다.Select to reinitialize the subscription with a new snapshot. 스냅숏 에이전트에 의해 스냅숏이 생성된 후에만 스냅숏을 구독자에 적용할 수 있습니다.The snapshot can be applied to the Subscriber only after it has been generated by the Snapshot Agent. 스냅숏 에이전트가 예약 실행되도록 설정한 경우에는 예약된 다음 스냅숏 에이전트가 실행될 때까지 구독이 다시 초기화되지 않습니다.If the Snapshot Agent is set to run on a schedule, the subscription is not reinitialized until after the next scheduled Snapshot Agent run. 스냅숏 에이전트를 바로 시작하려면 지금 새 스냅숏 생성 을 선택합니다.Select Generate the new snapshot now to start the Snapshot Agent immediately.

    다시 초기화하기 전에 동기화되지 않은 변경 내용 업로드Upload unsynchronized changes before reinitialization
    병합 복제에 대해서만 사용할 수 있습니다.Merge replication only. 구독자의 데이터를 스냅숏으로 덮어쓰기 전에 보류 중인 구독 데이터베이스의 변경 내용을 업로드하려면 이 옵션을 선택합니다.Select to upload any pending changes from the subscription database before the data at the Subscriber is overwritten with a snapshot.

    매개 변수가 있는 필터를 추가, 삭제 또는 변경할 경우 다시 초기화를 진행하는 동안에는 보류 중인 구독자의 변경 내용을 게시자로 업로드할 수 없습니다.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. 보류 중인 변경 내용을 업로드하려면 필터를 변경하기 전에 모든 구독을 동기화하세요.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. 구독이 다음에 동기화될 때 다시 초기화됩니다. 배포 에이전트(트랜잭션 복제의 경우) 또는 병합 에이전트(병합 복제의 경우)는 최신 스냅숏을 다시 초기화하도록 표시된 구독이 있는 각 구독자에 적용합니다.A subscription is reinitialized the next time it is synchronized: the Distribution Agent (for transactional replication) or Merge Agent (for merge replication) applies the most recent snapshot to each Subscriber that has a subscription marked for reinitialization. 구독 동기화 방법은 Synchronize a Push SubscriptionSynchronize a Pull Subscription대화 상자에서 다시 초기화할 구독을 표시합니다.For more information about synchronizing subscriptions, see Synchronize a Push Subscription and Synchronize a Pull Subscription.

Management Studio에서 단일 밀어넣기 또는 끌어오기 구독을 다시 초기화하도록 표시하려면(게시자)To mark a single push or pull subscription for reinitialization in Management Studio (at the Publisher)

  1. Management StudioManagement Studio에서 게시자에 연결한 다음 해당 서버 노드를 확장합니다.Connect to the Publisher in Management StudioManagement Studio, and then expand the server node.

  2. 복제 폴더를 확장한 다음 로컬 게시 폴더를 확장합니다.Expand the Replication folder, and then expand the Local Publications folder.

  3. 다시 초기화할 구독이 있는 게시를 확장합니다.Expand the publication that has the subscription you want to reinitialize.

  4. 구독을 마우스 오른쪽 단추로 클릭한 다음 다시 초기화를 클릭합니다.Right-click the subscription, and then click Reinitialize.

  5. 구독 다시 초기화 대화 상자에서 옵션을 선택한 다음 다시 초기화 표시를 클릭합니다.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

Management Studio에서 단일 끌어오기 구독을 다시 초기화하도록 표시하려면(구독자)To mark a single pull subscription for reinitialization in Management Studio (at the Subscriber)

  1. Management StudioManagement Studio에서 구독자에 연결한 다음 해당 서버 노드를 확장합니다.Connect to the Subscriber in Management StudioManagement Studio, and then expand the server node.

  2. 복제 폴더를 확장한 다음 로컬 구독 폴더를 확장합니다.Expand the Replication folder, and then expand the Local Subscriptions folder.

  3. 구독을 마우스 오른쪽 단추로 클릭한 다음 다시 초기화를 클릭합니다.Right-click the subscription, and then click Reinitialize.

  4. 확인 대화 상자가 표시되면 를 클릭합니다.In the confirmation dialog box that is displayed, click Yes.

Management Studio에서 모든 구독을 다시 초기화하도록 표시하려면To mark all subscriptions for reinitialization in Management Studio

  1. Management StudioManagement Studio에서 게시자에 연결한 다음 해당 서버 노드를 확장합니다.Connect to the Publisher in Management StudioManagement Studio, and then expand the server node.

  2. 복제 폴더를 확장한 다음 로컬 게시 폴더를 확장합니다.Expand the Replication folder, and then expand the Local Publications folder.

  3. 다시 초기화할 구독이 있는 게시를 마우스 오른쪽 단추로 클릭한 다음 모든 구독 다시 초기화를 클릭합니다.Right-click the publication with subscriptions you want to reinitialize, and then click Reinitialize All Subscriptions.

  4. 구독 다시 초기화 대화 상자에서 옵션을 선택한 다음 다시 초기화 표시를 클릭합니다.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

복제 모니터에서 단일 밀어넣기 또는 끌어오기 구독을 다시 초기화하도록 표시하려면To mark a single push or pull subscription for reinitialization in Replication Monitor

  1. 복제 모니터에서 왼쪽 창의 게시자 그룹을 확장하고 해당 게시자를 확장한 다음 해당 게시를 클릭합니다.In Replication Monitor, expand a Publisher group in the left pane, expand a Publisher, and then click a publication.

  2. 모든 구독 탭을 클릭합니다.Click the All Subscriptions tab.

  3. 다시 초기화할 구독을 마우스 오른쪽 단추로 클릭한 다음 구독 다시 초기화를 클릭합니다.Right-click the subscription you want to reinitialize, and then click Reinitialize Subscription.

  4. 구독 다시 초기화 대화 상자에서 옵션을 선택한 다음 다시 초기화 표시를 클릭합니다.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

복제 모니터에서 모든 구독을 다시 초기화하도록 표시하려면To mark all subscriptions for reinitialization in Replication Monitor

  1. 복제 모니터에서 왼쪽 창의 게시자 그룹을 확장한 다음 게시자를 확장합니다.In Replication Monitor, expand a Publisher group in the left pane, and then expand a Publisher.

  2. 다시 초기화할 구독이 있는 게시를 마우스 오른쪽 단추로 클릭한 다음 모든 구독 다시 초기화를 클릭합니다.Right-click the publication with subscriptions you want to reinitialize, and then click Reinitialize All Subscriptions.

  3. 구독 다시 초기화 대화 상자에서 옵션을 선택한 다음 다시 초기화 표시를 클릭합니다.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

Transact-SQL 사용 Using Transact-SQL

복제 저장 프로시저를 사용하여 프로그래밍 방식으로 게시를 다시 초기화할 수 있습니다.Subscriptions can be reinitialized programmatically using replication stored procedures. 사용되는 저장 프로시저는 구독의 유형(밀어넣기 또는 끌어오기) 및 구독이 속한 게시의 유형에 따라 다릅니다.The stored procedure that is used depends on the type of subscription (push or pull) and the type of publication to which the subscription belongs.

트랜잭션 게시에 대한 끌어오기 구독을 다시 초기화하려면To reinitialize a pull subscription to a transactional publication

  1. 구독 데이터베이스의 구독자에서 sp_reinitpullsubscription(Transact-SQL)을 실행합니다.At the Subscriber on the subscription database, execute sp_reinitpullsubscription (Transact-SQL). @publisher, @publisher_db@publication를 지정합니다.Specify @publisher, @publisher_db, and @publication. 이렇게 하면 다음 배포 에이전트 실행 시 구독을 다시 초기화하도록 표시됩니다.This marks the subscription for reinitialization the next time the Distribution Agent runs.

  2. 필요에 따라 구독자에서 배포 에이전트를 시작하여 구독을 동기화합니다.(Optional) Start the Distribution Agent at the Subscriber to synchronize the subscription. 자세한 내용은 Synchronize a Pull Subscription을 참조하세요.For more information, see Synchronize a Pull Subscription.

트랜잭션 게시에 대한 밀어넣기 구독을 다시 초기화하려면To reinitialize a push subscription to a transactional publication

  1. 게시자에서 sp_reinitsubscription(Transact-SQL)을 실행합니다.At the Publisher, execute sp_reinitsubscription (Transact-SQL). @publication, @subscriber@destination_db를 지정합니다.Specify @publication, @subscriber, and @destination_db. 이렇게 하면 다음 배포 에이전트 실행 시 구독을 다시 초기화하도록 표시됩니다.This marks the subscription for reinitialization the next time the Distribution Agent runs.

  2. 필요에 따라 배포자에서 배포 에이전트를 시작하여 구독을 동기화합니다.(Optional) Start the Distribution Agent at the Distributor to synchronize the subscription. 자세한 내용은 Synchronize a Push Subscription을 참조하세요.For more information, see Synchronize a Push Subscription.

병합 게시에 대한 끌어오기 구독을 다시 초기화하려면To reinitialize a pull subscription to a merge publication

  1. 구독 데이터베이스의 구독자에서 sp_reinitmergepullsubscription(Transact-SQL)을 실행합니다.At the Subscriber on the subscription database, execute sp_reinitmergepullsubscription (Transact-SQL). @publisher, @publisher_db@publication를 지정합니다.Specify @publisher, @publisher_db, and @publication. 다시 초기화하기 전에 구독자에서 변경 내용을 업로드하려면 @upload_first @upload_first @upload_first대화 상자에서 다시 초기화할 구독을 표시합니다.To upload changes from the Subscriber before reinitialization occurs, specify a value of true for @upload_first. 이렇게 하면 다음 병합 에이전트 실행 시 구독을 다시 초기화하도록 표시됩니다.This marks the subscription for reinitialization the next time the Merge Agent runs.

    중요

    매개 변수가 있는 필터를 추가, 삭제 또는 변경할 경우 다시 초기화를 진행하는 동안에는 보류 중인 구독자의 변경 내용을 게시자로 업로드할 수 없습니다.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. 보류 중인 변경 내용을 업로드하려면 필터를 변경하기 전에 모든 구독을 동기화하세요.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. 필요에 따라 구독자에서 병합 에이전트를 시작하여 구독을 동기화합니다.(Optional) Start the Merge Agent at the Subscriber to synchronize the subscription. 자세한 내용은 Synchronize a Pull Subscription을 참조하세요.For more information, see Synchronize a Pull Subscription.

병합 게시에 대한 밀어넣기 구독을 다시 초기화하려면To reinitialize a push subscription to a merge publication

  1. 게시자에서 sp_reinitmergesubscription(Transact-SQL)을 실행합니다.At the Publisher, execute sp_reinitmergesubscription (Transact-SQL). @publication, @subscriber@subscriber_db를 지정합니다.Specify @publication, @subscriber, and @subscriber_db. 다시 초기화하기 전에 구독자에서 변경 내용을 업로드하려면 @upload_first @upload_first @upload_first대화 상자에서 다시 초기화할 구독을 표시합니다.To upload changes from the Subscriber before reinitialization occurs, specify a value of true for @upload_first. 이렇게 하면 다음 배포 에이전트 실행 시 구독을 다시 초기화하도록 표시됩니다.This marks the subscription for reinitialization the next time the Distribution Agent runs.

    중요

    매개 변수가 있는 필터를 추가, 삭제 또는 변경할 경우 다시 초기화를 진행하는 동안에는 보류 중인 구독자의 변경 내용을 게시자로 업로드할 수 없습니다.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. 보류 중인 변경 내용을 업로드하려면 필터를 변경하기 전에 모든 구독을 동기화하세요.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. 필요에 따라 배포자에서 병합 에이전트를 시작하여 구독을 동기화합니다.(Optional) Start the Merge Agent at the Distributor to synchronize the subscription. 자세한 내용은 Synchronize a Push Subscription을 참조하세요.For more information, see Synchronize a Push Subscription.

새 병합 게시를 만들 때 다시 초기화 정책을 설정하려면To set the reinitialization policy when creating a new merge publication

  1. 게시 데이터베이스의 게시자에서 @automatic_reinitialization_policy에 다음 중 한 가지 값을 지정하고 @automatic_reinitialization_policy을 실행합니다.At the Publisher on the publication database, execute sp_addmergepublication, specifying one of the following values for @automatic_reinitialization_policy:

    • 1 - 게시의 변경으로 의해 구독이 자동으로 다시 초기화되기 전에 구독자의 변경 내용이 업로드됩니다.1 - changes are uploaded from the Subscriber before a subscription is automatically reinitialized as required by a change to the publication.

    • 0 - 게시의 변경으로 인해 구독이 자동으로 다시 초기화될 때 구독자의 변경 내용이 삭제됩니다.0 - changes at the Subscriber are discarded when a subscription is automatically reinitialized as required by a change to the publication.

    중요

    매개 변수가 있는 필터를 추가, 삭제 또는 변경할 경우 다시 초기화를 진행하는 동안에는 보류 중인 구독자의 변경 내용을 게시자로 업로드할 수 없습니다.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. 보류 중인 변경 내용을 업로드하려면 필터를 변경하기 전에 모든 구독을 동기화하세요.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

    자세한 내용은 Create a Publication을 참조하세요.For more information, see Create a Publication.

기존 병합 게시에 대한 다시 초기화 정책을 변경하려면To change the reinitialization policy for an existing merge publication

  1. 게시 데이터베이스의 게시자에서 @propertyautomatic_reinitialization_policy @upload_first @property 에는 다음 값 중 하나를 지정하여 @value을 실행합니다.At the Publisher on the publication database, execute sp_changemergepublication, specifying automatic_reinitialization_policy for @property and one of the following values for @value:

    • 1 - 게시의 변경으로 의해 구독이 자동으로 다시 초기화되기 전에 구독자의 변경 내용이 업로드됩니다.1 - changes are uploaded from the Subscriber before a subscription is automatically reinitialized as required by a change to the publication.

    • 0 - 게시의 변경으로 인해 구독이 자동으로 다시 초기화될 때 구독자의 변경 내용이 삭제됩니다.0 - changes at the Subscriber are discarded when a subscription is automatically reinitialized as required by a change to the publication.

    중요

    매개 변수가 있는 필터를 추가, 삭제 또는 변경할 경우 다시 초기화를 진행하는 동안에는 보류 중인 구독자의 변경 내용을 게시자로 업로드할 수 없습니다.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. 보류 중인 변경 내용을 업로드하려면 필터를 변경하기 전에 모든 구독을 동기화하세요.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

    자세한 내용은 View and Modify Publication Properties을 참조하세요.For more information, see View and Modify Publication Properties.

RMO(복제 관리 개체) 사용 Using Replication Management Objects (RMO)

각 게시를 다시 초기화하도록 표시하여 다음 동기화 중에 새 스냅숏을 적용할 수 있습니다.Individual subscriptions can be marked for reinitialization so that during the next synchronization, a new snapshot is applied. RMO(복제 관리 개체)를 사용하여 프로그래밍 방식으로 구독을 다시 초기화할 수 있습니다.Subscriptions can be reinitialized programmatically by using Replication Management Objects (RMO). 사용되는 클래스는 구독이 속한 게시의 유형과 구독의 유형(밀어넣기 또는 끌어오기 구독)에 따라 다릅니다.The classes you use depend on the type of publication to which the subscription belongs and the type of subscription (that is, a push or pull subscription).

트랜잭션 게시에 대한 끌어오기 구독을 다시 초기화하려면To reinitialize a pull subscription to a transactional publication

  1. ServerConnection 클래스를 사용하여 구독자 연결을 만듭니다.Create a connection to the Subscriber by using the ServerConnection class.

  2. TransPullSubscription 클래스의 인스턴스를 만들고, PublicationName, DatabaseName, PublisherName, PublicationDBNameConnectionContext에 대해 1단계에서 만든 연결을 설정합니다.Create an instance of the TransPullSubscription class, and set PublicationName, DatabaseName, PublisherName, PublicationDBName, and the connection from step 1 for ConnectionContext.

  3. LoadProperties 메서드를 호출하여 개체 속성을 가져옵니다.Call the LoadProperties method to get the properties of the object.

    참고

    이 메서드가 false를 반환하는 경우 2단계에서 구독 속성이 올바르게 정의되지 않았거나 끌어오기 구독이 없는 것입니다.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the pull subscription does not exist.

  4. Reinitialize 메서드를 호출합니다.Call the Reinitialize method. 이 메서드는 구독을 다시 초기화하도록 표시합니다.This method marks the subscription for reinitialization.

  5. 끌어오기 구독을 동기화합니다.Synchronize the pull subscription. 자세한 내용은 Synchronize a Pull Subscription을 참조하세요.For more information, see Synchronize a Pull Subscription.

트랜잭션 게시에 대한 밀어넣기 구독을 다시 초기화하려면To reinitialize a push subscription to a transactional publication

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.Create a connection to the Publisher by using the ServerConnection class.

  2. TransSubscription 클래스의 인스턴스를 만들고, PublicationName, DatabaseName, SubscriberName, SubscriptionDBNameConnectionContext에 대해 1단계에서 만든 연결을 설정합니다.Create an instance of the TransSubscription class, and set PublicationName, DatabaseName, SubscriberName, SubscriptionDBName, and the connection from step 1 for ConnectionContext.

  3. LoadProperties 메서드를 호출하여 개체 속성을 가져옵니다.Call the LoadProperties method to get the properties of the object.

    참고

    이 메서드가 false를 반환하는 경우 2단계에서 구독 속성이 올바르게 정의되지 않았거나 밀어넣기 구독이 없는 것입니다.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the push subscription does not exist.

  4. Reinitialize 메서드를 호출합니다.Call the Reinitialize method. 이 메서드는 구독을 다시 초기화하도록 표시합니다.This method marks the subscription for reinitialization.

  5. 밀어넣기 구독을 동기화합니다.Synchronize the push subscription. 자세한 내용은 Synchronize a Push Subscription을 참조하세요.For more information, see Synchronize a Push Subscription.

병합 게시에 대한 끌어오기 구독을 다시 초기화하려면To reinitialize a pull subscription to a merge publication

  1. ServerConnection 클래스를 사용하여 구독자 연결을 만듭니다.Create a connection to the Subscriber by using the ServerConnection class.

  2. MergePullSubscription 클래스의 인스턴스를 만들고, PublicationName, DatabaseName, PublisherName, PublicationDBNameConnectionContext에 대해 1단계에서 만든 연결을 설정합니다.Create an instance of the MergePullSubscription class, and set PublicationName, DatabaseName, PublisherName, PublicationDBName, and the connection from step 1 for ConnectionContext.

  3. LoadProperties 메서드를 호출하여 개체 속성을 가져옵니다.Call the LoadProperties method to get the properties of the object.

    참고

    이 메서드가 false를 반환하는 경우 2단계에서 구독 속성이 올바르게 정의되지 않았거나 끌어오기 구독이 없는 것입니다.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the pull subscription does not exist.

  4. Reinitialize 메서드를 호출합니다.Call the Reinitialize method. 다시 초기화하기 전에 구독자의 변경 내용을 업로드하려면 true 값을 전달하고, 다시 초기화할 때 보류 중인 모든 변경 내용을 무시하려면 false 를 전달합니다.Pass a value of true to upload changes at the Subscriber before reinitialization or a value of false to reinitialize and lose any pending changes at the Subscriber. 이 메서드는 구독을 다시 초기화하도록 표시합니다.This method marks the subscription for reinitialization.

    참고

    구독이 만료되면 변경 내용을 업로드할 수 없습니다.Changes cannot be uploaded if the subscription is expired. 자세한 내용은 Set the Expiration Period for Subscriptions을 참조하세요.For more information, see Set the Expiration Period for Subscriptions.

  5. 끌어오기 구독을 동기화합니다.Synchronize the pull subscription. 자세한 내용은 Synchronize a Pull Subscription을 참조하세요.For more information, see Synchronize a Pull Subscription.

병합 게시에 대한 밀어넣기 구독을 다시 초기화하려면To reinitialize a push subscription to a merge publication

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.Create a connection to the Publisher by using the ServerConnection class.

  2. MergeSubscription 클래스의 인스턴스를 만들고, PublicationName, DatabaseName, SubscriberName, SubscriptionDBNameConnectionContext에 대해 1단계에서 만든 연결을 설정합니다.Create an instance of the MergeSubscription class, and set PublicationName, DatabaseName, SubscriberName, SubscriptionDBName, and the connection from step 1 for ConnectionContext.

  3. LoadProperties 메서드를 호출하여 개체 속성을 가져옵니다.Call the LoadProperties method to get the properties of the object.

    참고

    이 메서드가 false를 반환하는 경우 2단계에서 구독 속성이 올바르게 정의되지 않았거나 밀어넣기 구독이 없는 것입니다.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the push subscription does not exist.

  4. Reinitialize 메서드를 호출합니다.Call the Reinitialize method. 다시 초기화하기 전에 구독자의 변경 내용을 업로드하려면 true 값을 전달하고, 다시 초기화할 때 보류 중인 모든 변경 내용을 무시하려면 false 를 전달합니다.Pass a value of true to upload changes at the Subscriber before reinitialization or a value of false to reinitialize and lose any pending changes at the Subscriber. 이 메서드는 구독을 다시 초기화하도록 표시합니다.This method marks the subscription for reinitialization.

    참고

    구독이 만료되면 변경 내용을 업로드할 수 없습니다.Changes cannot be uploaded if the subscription is expired. 자세한 내용은 Set the Expiration Period for Subscriptions을 참조하세요.For more information, see Set the Expiration Period for Subscriptions.

  5. 밀어넣기 구독을 동기화합니다.Synchronize the push subscription. 자세한 내용은 Synchronize a Push Subscription을 참조하세요.For more information, see Synchronize a Push Subscription.

예(RMO) Examples (RMO)

다음 예에서는 트랜잭션 게시에 대한 끌어오기 구독을 다시 초기합니다.This example reinitializes a pull subscription to a transactional publication.

// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksProductTran";
String publicationDbName = "AdventureWorks2012";
         String subscriptionDbName = "AdventureWorks2012Replica";

// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);

TransPullSubscription subscription;

try
{
	// Connect to the Subscriber.
	conn.Connect();

	// Define subscription properties.
	subscription = new TransPullSubscription();
	subscription.ConnectionContext = conn;
             subscription.DatabaseName = subscriptionDbName;
	subscription.PublisherName = publisherName;
	subscription.PublicationDBName = publicationDbName;
	subscription.PublicationName = publicationName;

	// If the pull subscription and the job exists, mark the subscription
	// for reinitialization and start the agent job.
	if (subscription.LoadProperties() && subscription.AgentJobId != null)
	{
		subscription.Reinitialize();
		subscription.SynchronizeWithJob();
	}
	else
	{
		// Do something here if the subscription does not exist.
		throw new ApplicationException(String.Format(
			"A subscription to '{0}' does not exists on {1}",
			publicationName, subscriberName));
	}
}
catch (Exception ex)
{
	// Do appropriate error handling here.
	throw new ApplicationException("The subscription could not be reinitialized.", ex);
}
finally
{
	conn.Disconnect();
}
' Define server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2012"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)

Dim subscription As TransPullSubscription

Try
    ' Connect to the Subscriber.
    conn.Connect()

    ' Define subscription properties.
    subscription = New TransPullSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = subscriptionDbName
    subscription.PublisherName = publisherName
    subscription.PublicationDBName = publicationDbName
    subscription.PublicationName = publicationName

    ' If the pull subscription and the job exists, mark the subscription
    ' for reinitialization and start the agent job.
    If subscription.LoadProperties() And (Not subscription.AgentJobId Is Nothing) Then
        subscription.Reinitialize()
        subscription.SynchronizeWithJob()
    Else
        ' Do something here if the subscription does not exist.
        Throw New ApplicationException(String.Format( _
         "A subscription to '{0}' does not exists on {1}", _
         publicationName, subscriberName))
    End If
Catch ex As Exception
    ' Do appropriate error handling here.
    Throw New ApplicationException("The subscription could not be reinitialized.", ex)
Finally
    conn.Disconnect()
End Try

다음 예에서는 구독자에서 보류 중인 변경 내용을 먼저 업로드한 다음 병합 게시에 대한 끌어오기 구독을 다시 초기화합니다.This example reinitializes a pull subscription to a merge publication after first uploading pending changes at the Subscriber.

// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksSalesOrdersMerge";
String publicationDbName = "AdventureWorks2012";
         String subscriptionDbName = "AdventureWorks2012Replica";

// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);

MergePullSubscription subscription;

try
{
	// Connect to the Subscriber.
	conn.Connect();

	// Define subscription properties.
	subscription = new MergePullSubscription();
	subscription.ConnectionContext = conn;
             subscription.DatabaseName = subscriptionDbName;
	subscription.PublisherName = publisherName;
	subscription.PublicationDBName = publicationDbName;
	subscription.PublicationName = publicationName;

	// If the pull subscription and the job exists, mark the subscription
	// for reinitialization after upload and start the agent job.
	if (subscription.LoadProperties() && subscription.AgentJobId != null)
	{
		subscription.Reinitialize(true);
		subscription.SynchronizeWithJob();
	}
	else
	{
		// Do something here if the subscription does not exist.
		throw new ApplicationException(String.Format(
			"A subscription to '{0}' does not exists on {1}",
			publicationName, subscriberName));
	}
}
catch (Exception ex)
{
	// Do appropriate error handling here.
	throw new ApplicationException("The subscription could not be synchronized.", ex);
}
finally
{
	conn.Disconnect();
}
' Define server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)

Dim subscription As MergePullSubscription

Try
    ' Connect to the Subscriber.
    conn.Connect()

    ' Define subscription properties.
    subscription = New MergePullSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = subscriptionDbName
    subscription.PublisherName = publisherName
    subscription.PublicationDBName = publicationDbName
    subscription.PublicationName = publicationName

    ' If the pull subscription and the job exists, mark the subscription
    ' for reinitialization after upload and start the agent job.
    If subscription.LoadProperties() And (Not subscription.AgentJobId Is Nothing) Then
        subscription.Reinitialize(True)
        subscription.SynchronizeWithJob()
    Else
        ' Do something here if the subscription does not exist.
        Throw New ApplicationException(String.Format( _
         "A subscription to '{0}' does not exists on {1}", _
         publicationName, subscriberName))
    End If
Catch ex As Exception
    ' Do appropriate error handling here.
    Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
    conn.Disconnect()
End Try

참고 항목See Also

구독 다시 초기화 Reinitialize Subscriptions
Replication Management Objects Concepts Replication Management Objects Concepts
Replication Security Best Practices Replication Security Best Practices