Reinizializzare una sottoscrizioneReinitialize a Subscription

In questo argomento viene descritto come reinizializzare una sottoscrizione in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLo RMO (Replication Management Objects).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). È possibile contrassegnare singole sottoscrizioni per la reinizializzazione in modo che nel corso della successiva sincronizzazione venga applicato un nuovo snapshot.Individual subscriptions can be marked for reinitialization so that a new snapshot is applied during the next synchronization.

Contenuto dell'argomentoIn This Topic

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Il processo di reinizializzazione di una sottoscrizione è articolato in due parti.Reinitializing a subscription is a two-part process:

  1. Una singola sottoscrizione o tutte le sottoscrizioni di una pubblicazione vengono contrassegnate per la reinizializzazione.A single subscription or all subscriptions to a publication are marked for reinitialization. Contrassegnare le sottoscrizioni per la reinizializzazione nella finestra di dialogo Reinizializza sottoscrizioni , accessibile dalla cartella Pubblicazioni locali e dalla cartella Sottoscrizioni locali in 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. È inoltre possibile contrassegnare le sottoscrizioni nella scheda Tutte le sottoscrizioni e nel nodo delle pubblicazioni in Monitoraggio replica.You can also mark subscriptions from the All Subscriptions tab and the publications node in Replication Monitor. Per informazioni sull'avvio di Monitoraggio replica, vedere Avviare Monitoraggio replica.For information about starting Replication Monitor, see Start the Replication Monitor. Quando si contrassegna una sottoscrizione per la reinizializzazione, sono disponibili le opzioni seguenti:When you mark a subscription for reinitialization, you have the following options:

    Usa lo snapshot correnteUse the current snapshot
    Selezionare questa opzione per applicare lo snapshot corrente al Sottoscrittore alla successiva esecuzione dell'agente di distribuzione o dell'agente di merge.Select to apply the current snapshot to the Subscriber the next time the Distribution Agent or Merge Agent runs. Se non sono disponibili snapshot validi, questa opzione non può essere selezionata.If there is no valid snapshot available, this option cannot be selected.

    Usa un nuovo snapshotUse a new snapshot
    Selezionare questa opzione per reinizializzare la sottoscrizione con un nuovo snapshot.Select to reinitialize the subscription with a new snapshot. Lo snapshot può essere applicato al Sottoscrittore solo dopo essere stato generato dall'agente snapshot.The snapshot can be applied to the Subscriber only after it has been generated by the Snapshot Agent. Se l'agente snapshot è impostato in modo da essere eseguito in base a una pianificazione, la sottoscrizione verrà reinizializzata soltanto dopo la successiva esecuzione pianificata dell'agente snapshot.If the Snapshot Agent is set to run on a schedule, the subscription is not reinitialized until after the next scheduled Snapshot Agent run. Per avviare l'agente snapshot immediatamente, selezionare Genera il nuovo snapshot ora .Select Generate the new snapshot now to start the Snapshot Agent immediately.

    Carica le modifiche non sincronizzate prima della reinizializzazioneUpload unsynchronized changes before reinitialization
    Solo per la replica di tipo merge.Merge replication only. Selezionare questa opzione per caricare le eventuali modifiche in sospeso dal database della sottoscrizione prima che i dati nel Sottoscrittore vengano sovrascritti con uno snapshot.Select to upload any pending changes from the subscription database before the data at the Subscriber is overwritten with a snapshot.

    Se si aggiunge, elimina o modifica un filtro con parametri, le modifiche in sospeso nel Sottoscrittore non possono essere caricate nel server di pubblicazione durante la reinizializzazione.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Per caricare le modifiche in sospeso, sincronizzare tutte le sottoscrizioni prima di modificare il filtro.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. Una sottoscrizione viene reinizializzata alla successiva sincronizzazione. L'agente di distribuzione (per la replica transazionale) o l'agente di merge (per la replica di tipo merge) applica lo snapshot più recente a ogni Sottoscrittore dotato di una sottoscrizione contrassegnata per la reinizializzazione.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. Per ulteriori informazioni sulla sincronizzazione delle sottoscrizioni, vedere Synchronize a Push Subscription e Synchronize a Pull Subscription.For more information about synchronizing subscriptions, see Synchronize a Push Subscription and Synchronize a Pull Subscription.

Per contrassegnare una singola sottoscrizione push o pull per la reinizializzazione in Management Studio (nel server di pubblicazione)To mark a single push or pull subscription for reinitialization in Management Studio (at the Publisher)

  1. Connettersi al server di pubblicazione in Management StudioManagement Studioe quindi espandere il nodo del server.Connect to the Publisher in Management StudioManagement Studio, and then expand the server node.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .Expand the Replication folder, and then expand the Local Publications folder.

  3. Espandere la pubblicazione di cui si desidera reinizializzare la sottoscrizione.Expand the publication that has the subscription you want to reinitialize.

  4. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Reinizializza.Right-click the subscription, and then click Reinitialize.

  5. Nella finestra di dialogo Reinizializza sottoscrizioni selezionare le opzioni desiderate e quindi fare clic su Contrassegna per la reinizializzazione.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

Per contrassegnare una singola sottoscrizione pull per la reinizializzazione in Management Studio (nel Sottoscrittore)To mark a single pull subscription for reinitialization in Management Studio (at the Subscriber)

  1. Connettersi al Sottoscrittore in Management StudioManagement Studioe quindi espandere il nodo del server.Connect to the Subscriber in Management StudioManagement Studio, and then expand the server node.

  2. Espandere la cartella Replica e quindi la cartella Sottoscrizioni locali .Expand the Replication folder, and then expand the Local Subscriptions folder.

  3. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Reinizializza.Right-click the subscription, and then click Reinitialize.

  4. Nella finestra di dialogo di conferma che viene visualizzata, fare clic su .In the confirmation dialog box that is displayed, click Yes.

Per contrassegnare tutte le sottoscrizioni per la reinizializzazione in Management StudioTo mark all subscriptions for reinitialization in Management Studio

  1. Connettersi al server di pubblicazione in Management StudioManagement Studioe quindi espandere il nodo del server.Connect to the Publisher in Management StudioManagement Studio, and then expand the server node.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .Expand the Replication folder, and then expand the Local Publications folder.

  3. Fare clic con il pulsante destro del mouse sulla pubblicazione di cui desidera reinizializzare le sottoscrizioni e quindi scegliere Reinizializza tutte le sottoscrizioni.Right-click the publication with subscriptions you want to reinitialize, and then click Reinitialize All Subscriptions.

  4. Nella finestra di dialogo Reinizializza sottoscrizioni selezionare le opzioni desiderate e quindi fare clic su Contrassegna per la reinizializzazione.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

Per contrassegnare una singola sottoscrizione push o pull per la reinizializzazione in Monitoraggio replicaTo mark a single push or pull subscription for reinitialization in Replication Monitor

  1. In Monitoraggio replica espandere un gruppo di server di pubblicazione nel riquadro di sinistra, espandere un server di pubblicazione e quindi fare clic su una pubblicazione.In Replication Monitor, expand a Publisher group in the left pane, expand a Publisher, and then click a publication.

  2. Fare clic sulla scheda Tutte le sottoscrizioni .Click the All Subscriptions tab.

  3. Fare clic con il pulsante destro del mouse sulla sottoscrizione che si desidera reinizializzare e quindi scegliere Reinizializza sottoscrizione.Right-click the subscription you want to reinitialize, and then click Reinitialize Subscription.

  4. Nella finestra di dialogo Reinizializza sottoscrizioni selezionare le opzioni desiderate e quindi fare clic su Contrassegna per la reinizializzazione.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

Per contrassegnare tutte le sottoscrizioni per la reinizializzazione in Monitoraggio replicaTo mark all subscriptions for reinitialization in Replication Monitor

  1. In Monitoraggio replica espandere un gruppo di server di pubblicazione nel riquadro di sinistra e quindi espandere un server di pubblicazione.In Replication Monitor, expand a Publisher group in the left pane, and then expand a Publisher.

  2. Fare clic con il pulsante destro del mouse sulla pubblicazione di cui desidera reinizializzare le sottoscrizioni e quindi scegliere Reinizializza tutte le sottoscrizioni.Right-click the publication with subscriptions you want to reinitialize, and then click Reinitialize All Subscriptions.

  3. Nella finestra di dialogo Reinizializza sottoscrizioni selezionare le opzioni desiderate e quindi fare clic su Contrassegna per la reinizializzazione.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

Utilizzo di Transact-SQL Using Transact-SQL

È possibile reinizializzare le sottoscrizioni a livello di programmazione tramite le stored procedure di replica.Subscriptions can be reinitialized programmatically using replication stored procedures. La stored procedure utilizzata dipende dal tipo di sottoscrizione, ovvero push o pull, nonché dal tipo di pubblicazione a cui appartiene la sottoscrizione.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.

Per reinizializzare una sottoscrizione pull in una pubblicazione transazionaleTo reinitialize a pull subscription to a transactional publication

  1. Nel database di sottoscrizione del Sottoscrittore eseguire sp_reinitpullsubscription (Transact-SQL).At the Subscriber on the subscription database, execute sp_reinitpullsubscription (Transact-SQL). Specificare i parametri @publisher, @publisher_dbe @publication.Specify @publisher, @publisher_db, and @publication. La sottoscrizione verrà contrassegnata per la reinizializzazione alla successiva esecuzione dell'agente di distribuzione.This marks the subscription for reinitialization the next time the Distribution Agent runs.

  2. (Facoltativo) Avviare l'agente di distribuzione nel Sottoscrittore per sincronizzare la sottoscrizione.(Optional) Start the Distribution Agent at the Subscriber to synchronize the subscription. Per altre informazioni, vedere Synchronize a Pull Subscription.For more information, see Synchronize a Pull Subscription.

Per reinizializzare una sottoscrizione push in una pubblicazione transazionaleTo reinitialize a push subscription to a transactional publication

  1. Nel server di pubblicazione eseguire sp_reinitsubscription (Transact-SQL).At the Publisher, execute sp_reinitsubscription (Transact-SQL). Specificare i parametri @publication, @subscribere @destination_db.Specify @publication, @subscriber, and @destination_db. La sottoscrizione verrà contrassegnata per la reinizializzazione alla successiva esecuzione dell'agente di distribuzione.This marks the subscription for reinitialization the next time the Distribution Agent runs.

  2. (Facoltativo) Avviare l'agente di distribuzione nel server di distribuzione per sincronizzare la sottoscrizione.(Optional) Start the Distribution Agent at the Distributor to synchronize the subscription. Per altre informazioni, vedere Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

Per reinizializzare una sottoscrizione pull in una pubblicazione di tipo mergeTo reinitialize a pull subscription to a merge publication

  1. Nel database di sottoscrizione del Sottoscrittore eseguire sp_reinitmergepullsubscription (Transact-SQL).At the Subscriber on the subscription database, execute sp_reinitmergepullsubscription (Transact-SQL). Specificare i parametri @publisher, @publisher_dbe @publication.Specify @publisher, @publisher_db, and @publication. Per caricare le modifiche dal Sottoscrittore prima della reinizializzazione, specificare il valore true per @upload_first.To upload changes from the Subscriber before reinitialization occurs, specify a value of true for @upload_first. La sottoscrizione verrà contrassegnata per la reinizializzazione alla successiva esecuzione dell'agente di merge.This marks the subscription for reinitialization the next time the Merge Agent runs.

    Importante

    Se si aggiunge, elimina o modifica un filtro con parametri, le modifiche in sospeso nel Sottoscrittore non possono essere caricate nel server di pubblicazione durante la reinizializzazione.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Per caricare le modifiche in sospeso, sincronizzare tutte le sottoscrizioni prima di modificare il filtro.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. (Facoltativo) Avviare l'agente di merge nel Sottoscrittore per sincronizzare la sottoscrizione.(Optional) Start the Merge Agent at the Subscriber to synchronize the subscription. Per altre informazioni, vedere Synchronize a Pull Subscription.For more information, see Synchronize a Pull Subscription.

Per reinizializzare una sottoscrizione push in una pubblicazione di tipo mergeTo reinitialize a push subscription to a merge publication

  1. Nel server di pubblicazione eseguire sp_reinitmergesubscription (Transact-SQL).At the Publisher, execute sp_reinitmergesubscription (Transact-SQL). Specificare i parametri @publication, @subscribere @subscriber_db.Specify @publication, @subscriber, and @subscriber_db. Per caricare le modifiche dal Sottoscrittore prima della reinizializzazione, specificare il valore true per @upload_first.To upload changes from the Subscriber before reinitialization occurs, specify a value of true for @upload_first. La sottoscrizione verrà contrassegnata per la reinizializzazione alla successiva esecuzione dell'agente di distribuzione.This marks the subscription for reinitialization the next time the Distribution Agent runs.

    Importante

    Se si aggiunge, elimina o modifica un filtro con parametri, le modifiche in sospeso nel Sottoscrittore non possono essere caricate nel server di pubblicazione durante la reinizializzazione.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Per caricare le modifiche in sospeso, sincronizzare tutte le sottoscrizioni prima di modificare il filtro.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. (Facoltativo) Avviare l'agente di merge nel server di distribuzione per sincronizzare la sottoscrizione.(Optional) Start the Merge Agent at the Distributor to synchronize the subscription. Per altre informazioni, vedere Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

Per impostare i criteri di reinizializzazione durante la creazione di una nuova pubblicazione di tipo mergeTo set the reinitialization policy when creating a new merge publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergepublication, specificando uno dei valori seguenti per @automatic_reinitialization_policy:At the Publisher on the publication database, execute sp_addmergepublication, specifying one of the following values for @automatic_reinitialization_policy:

    • 1 : le modifiche vengono caricate dal Sottoscrittore prima della reinizializzazione automatica di una sottoscrizione in seguito a una modifica della pubblicazione.1 - changes are uploaded from the Subscriber before a subscription is automatically reinitialized as required by a change to the publication.

    • 0 : le modifiche nel Sottoscrittore vengono eliminate quando una sottoscrizione viene reinizializzata automaticamente in seguito a una modifica della pubblicazione.0 - changes at the Subscriber are discarded when a subscription is automatically reinitialized as required by a change to the publication.

    Importante

    Se si aggiunge, elimina o modifica un filtro con parametri, le modifiche in sospeso nel Sottoscrittore non possono essere caricate nel server di pubblicazione durante la reinizializzazione.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Per caricare le modifiche in sospeso, sincronizzare tutte le sottoscrizioni prima di modificare il filtro.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

    Per altre informazioni, vedere Create a Publication.For more information, see Create a Publication.

Per modificare i criteri di reinizializzazione per una pubblicazione di tipo merge esistenteTo change the reinitialization policy for an existing merge publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_changemergepublication, specificando automatic_reinitialization_policy per @property e uno dei valori seguenti per @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 : le modifiche vengono caricate dal Sottoscrittore prima della reinizializzazione automatica di una sottoscrizione in seguito a una modifica della pubblicazione.1 - changes are uploaded from the Subscriber before a subscription is automatically reinitialized as required by a change to the publication.

    • 0 : le modifiche nel Sottoscrittore vengono eliminate quando una sottoscrizione viene reinizializzata automaticamente in seguito a una modifica della pubblicazione.0 - changes at the Subscriber are discarded when a subscription is automatically reinitialized as required by a change to the publication.

    Importante

    Se si aggiunge, elimina o modifica un filtro con parametri, le modifiche in sospeso nel Sottoscrittore non possono essere caricate nel server di pubblicazione durante la reinizializzazione.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Per caricare le modifiche in sospeso, sincronizzare tutte le sottoscrizioni prima di modificare il filtro.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

    Per altre informazioni, vedere View and Modify Publication Properties.For more information, see View and Modify Publication Properties.

Utilizzo di RMO (Replication Management Objects) Using Replication Management Objects (RMO)

È possibile contrassegnare singole sottoscrizioni per la reinizializzazione in modo che nel corso della successiva sincronizzazione venga applicato un nuovo snapshot.Individual subscriptions can be marked for reinitialization so that during the next synchronization, a new snapshot is applied. Le sottoscrizioni possono essere reinizializzate a livello di programmazione tramite gli oggetti RMO (Replication Management Objects).Subscriptions can be reinitialized programmatically by using Replication Management Objects (RMO). Le classi utilizzate dipendono dal tipo di pubblicazione a cui appartiene la sottoscrizione e dal tipo di sottoscrizione, ovvero push o pull.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).

Per reinizializzare una sottoscrizione pull in una pubblicazione transazionaleTo reinitialize a pull subscription to a transactional publication

  1. Creare una connessione al Sottoscrittore tramite la classe ServerConnection .Create a connection to the Subscriber by using the ServerConnection class.

  2. Creare un'istanza della classe TransPullSubscription , quindi impostare PublicationName, DatabaseName, PublisherName, PublicationDBNamee la connessione ottenuta al passaggio 1 per ConnectionContext.Create an instance of the TransPullSubscription class, and set PublicationName, DatabaseName, PublisherName, PublicationDBName, and the connection from step 1 for ConnectionContext.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto.Call the LoadProperties method to get the properties of the object.

    Nota

    Se questo metodo restituisce false, le proprietà di sottoscrizione sono state definite in modo non corretto nel passaggio 2 oppure la sottoscrizione pull non esiste.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the pull subscription does not exist.

  4. Chiamare il metodo Reinitialize .Call the Reinitialize method. Questo metodo contrassegna la sottoscrizione per la reinizializzazione.This method marks the subscription for reinitialization.

  5. Sincronizzare la sottoscrizione pull.Synchronize the pull subscription. Per altre informazioni, vedere Synchronize a Pull Subscription.For more information, see Synchronize a Pull Subscription.

Per reinizializzare una sottoscrizione push in una pubblicazione transazionaleTo reinitialize a push subscription to a transactional publication

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Creare un'istanza della classe TransSubscription , quindi impostare PublicationName, DatabaseName, SubscriberName, SubscriptionDBNamee la connessione ottenuta al passaggio 1 per ConnectionContext.Create an instance of the TransSubscription class, and set PublicationName, DatabaseName, SubscriberName, SubscriptionDBName, and the connection from step 1 for ConnectionContext.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto.Call the LoadProperties method to get the properties of the object.

    Nota

    Se questo metodo restituisce false, le proprietà di sottoscrizione sono state definite in modo non corretto nel passaggio 2 oppure la sottoscrizione push non esiste.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the push subscription does not exist.

  4. Chiamare il metodo Reinitialize .Call the Reinitialize method. Questo metodo contrassegna la sottoscrizione per la reinizializzazione.This method marks the subscription for reinitialization.

  5. Sincronizzare la sottoscrizione push.Synchronize the push subscription. Per altre informazioni, vedere Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

Per reinizializzare una sottoscrizione pull in una pubblicazione di tipo mergeTo reinitialize a pull subscription to a merge publication

  1. Creare una connessione al Sottoscrittore tramite la classe ServerConnection .Create a connection to the Subscriber by using the ServerConnection class.

  2. Creare un'istanza della classe MergePullSubscription , quindi impostare PublicationName, DatabaseName, PublisherName, PublicationDBNamee la connessione ottenuta al passaggio 1 per ConnectionContext.Create an instance of the MergePullSubscription class, and set PublicationName, DatabaseName, PublisherName, PublicationDBName, and the connection from step 1 for ConnectionContext.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto.Call the LoadProperties method to get the properties of the object.

    Nota

    Se questo metodo restituisce false, le proprietà di sottoscrizione sono state definite in modo non corretto nel passaggio 2 oppure la sottoscrizione pull non esiste.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the pull subscription does not exist.

  4. Chiamare il metodo Reinitialize .Call the Reinitialize method. Passare il valore true per caricare le modifiche nel Sottoscrittore prima della reinizializzazione oppure il valore false per eseguire la reinizializzazione e perdere eventuali modifiche in sospeso nel Sottoscrittore.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. Questo metodo contrassegna la sottoscrizione per la reinizializzazione.This method marks the subscription for reinitialization.

    Nota

    Se la sottoscrizione è scaduta, non sarà possibile caricare le modifiche.Changes cannot be uploaded if the subscription is expired. Per altre informazioni, vedere Set the Expiration Period for Subscriptions.For more information, see Set the Expiration Period for Subscriptions.

  5. Sincronizzare la sottoscrizione pull.Synchronize the pull subscription. Per altre informazioni, vedere Synchronize a Pull Subscription.For more information, see Synchronize a Pull Subscription.

Per reinizializzare una sottoscrizione push in una pubblicazione di tipo mergeTo reinitialize a push subscription to a merge publication

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Creare un'istanza della classe MergeSubscription , quindi impostare PublicationName, DatabaseName, SubscriberName, SubscriptionDBNamee la connessione ottenuta al passaggio 1 per ConnectionContext.Create an instance of the MergeSubscription class, and set PublicationName, DatabaseName, SubscriberName, SubscriptionDBName, and the connection from step 1 for ConnectionContext.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto.Call the LoadProperties method to get the properties of the object.

    Nota

    Se questo metodo restituisce false, le proprietà di sottoscrizione sono state definite in modo non corretto nel passaggio 2 oppure la sottoscrizione push non esiste.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the push subscription does not exist.

  4. Chiamare il metodo Reinitialize .Call the Reinitialize method. Passare il valore true per caricare le modifiche nel Sottoscrittore prima della reinizializzazione oppure il valore false per eseguire la reinizializzazione e perdere eventuali modifiche in sospeso nel Sottoscrittore.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. Questo metodo contrassegna la sottoscrizione per la reinizializzazione.This method marks the subscription for reinitialization.

    Nota

    Se la sottoscrizione è scaduta, non sarà possibile caricare le modifiche.Changes cannot be uploaded if the subscription is expired. Per altre informazioni, vedere Set the Expiration Period for Subscriptions.For more information, see Set the Expiration Period for Subscriptions.

  5. Sincronizzare la sottoscrizione push.Synchronize the push subscription. Per altre informazioni, vedere Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

Esempi (RMO) Examples (RMO)

In questo esempio viene eseguita la reinizializzazione di una sottoscrizione pull in una pubblicazione transazionale.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

In questo esempio viene eseguita la reinizializzazione di una sottoscrizione pull in una pubblicazione di tipo merge dopo aver prima caricato le modifiche in sospeso nel Sottoscrittore.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

Vedere ancheSee Also

Reinizializzare le sottoscrizioni Reinitialize Subscriptions
Replication Management Objects Concepts Replication Management Objects Concepts
Replication Security Best PracticesReplication Security Best Practices