Convalida dei dati nel SottoscrittoreValidate Data at the Subscriber

In questo argomento viene descritto come convalidare i dati nel Sottoscrittore 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 validate data at the Subscriber in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO).

La convalida dei dati è un processo suddiviso in tre parti:Validating data is a three-part process:

  1. Una sottoscrizione o tutte le sottoscrizioni di una pubblicazione vengono contrassegnate per la convalida.A single subscription or all subscriptions to a publication are marked for validation. \Contrassegnare le sottoscrizioni per la convalida nelle finestre di dialogo Convalida sottoscrizione, Convalida sottoscrizionie Convalida tutte le sottoscrizioni , disponibili dalle cartelle Pubblicazioni locali e Sottoscrizioni locali in MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studio.Mark subscriptions for validation in the Validate Subscription, Validate Subscriptions, and Validate All Subscriptions dialog boxes, which are 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 , nella scheda Elenco verifica sottoscrizioni e nel nodo delle pubblicazioni in Monitoraggio replica.You can also mark subscriptions from the All Subscriptions tab, the Subscription Watch List 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.

  2. La sottoscrizione viene convalidata alla successiva sincronizzazione eseguita dall'agente di distribuzione, nel caso della replica transazionale, o dall'agente di merge nella replica di tipo merge.A subscription is validated the next time it is synchronized by the Distribution Agent (for transactional replication) or the Merge Agent (for merge replication). L'agente di distribuzione in genere viene eseguito in modo continuativo, pertanto la convalida viene eseguita immediatamente, mentre l'agente di merge in genere viene eseguito su richiesta, pertanto la convalida viene eseguita solo dopo l'esecuzione dell'agente.The Distribution Agent typically runs continuously, in which case validation occurs immediately; the Merge Agent typically runs on demand, in which case validation occurs after you run the agent.

  3. I risultati della convalida possono essere visualizzati nelle finestre seguenti:View the validation results:

    • Nella finestra dei dettagli in Monitoraggio replica, all'interno della scheda Cronologia database di distribuzione - Sottoscrittore per la replica transazionale e nella scheda Cronologia sincronizzazione per la replica di tipo merge.In the detail windows in Replication Monitor: on the Distributor to Subscriber History tab for transactional replication and the Synchronization History tab for merge replication.

    • Nella finestra di dialogo Visualizza stato sincronizzazione in Management StudioManagement Studio.In the View Synchronization Status dialog box in Management StudioManagement Studio.

    Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • Le procedure relative a Monitoraggio replica riguardano solo le sottoscrizioni push in quanto le sottoscrizioni pull non possono essere sincronizzate in Monitoraggio replica.The procedures for Replication Monitor are for push subscriptions only because pull subscriptions cannot be synchronized in Replication Monitor. È tuttavia possibile contrassegnare una sottoscrizione per la convalida e visualizzare i risultati della convalida per le sottoscrizioni pull in Monitoraggio replica.However, you can mark a subscription for validation and view validation results for pull subscriptions in Replication Monitor.

  • I risultati della convalida consentono di stabilire se la convalida è stata completata correttamente o meno, ma in caso di errore non indicano quali righe non hanno superato la convalida.The validation results indicate whether validation succeeded or failed, but do not specify which rows failed validation if a failure occurred. Per confrontare i dati nel server di pubblicazione e nel Sottoscrittore, utilizzare la tablediff Utility.To compare data at the Publisher and Subscriber, use the tablediff Utility. Per ulteriori informazioni sull'uso di questa utilità con i dati replicati, vedere Confrontare tabelle replicate al fine di individuare le differenze (programmazione della replica).For more information about using this utility with replicated data, see Compare Replicated Tables for Differences (Replication Programming).

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per convalidare i dati per le sottoscrizioni di una pubblicazione transazionale (Management Studio)To validate data for subscriptions to a transactional publication (Management Studio)

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studioe quindi espandere il nodo del server.Connect to the Publisher in SQL Server Management StudioSQL Server Management 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 si desidera convalidare le sottoscrizioni e quindi scegliere Convalida sottoscrizioni.Right-click the publication for which you want to validate subscriptions, and then click Validate Subscriptions.

  4. Nella finestra di dialogo Convalida sottoscrizioni selezionare le sottoscrizioni da convalidare:In the Validate Subscriptions dialog box, select which subscriptions to validate:

    • Selezionare Convalida tutte le sottoscrizioni SQL Server.Select Validate all SQL Server subscriptions.

    • Selezionare Convalida le sottoscrizioni seguentie quindi scegliere una o più sottoscrizioni.Select Validate the following subscriptions, and then select one or more subscriptions.

  5. Per specificare il tipo di convalida da eseguire (solo conteggio delle righe o conteggio delle righe e valori di checksum), fare clic su Opzioni di convalidae quindi specificare le opzioni nella finestra di dialogo Opzioni di convalida delle sottoscrizioni .To specify the type of validation to perform (row count, or row count and checksum) click Validation Options, and then specify options in the Subscription Validation Options dialog box.

  6. Fare clic su OK.Click OK.

  7. I risultati della convalida possono essere visualizzati in Monitoraggio replica o nella finestra di dialogo Visualizza stato sincronizzazione .View validation results in Replication Monitor or the View Synchronization Status dialog box. Eseguire la procedura seguente per ogni sottoscrizione:For each subscription:

    1. Espandere la pubblicazione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza stato sincronizzazione.Expand the publication, right-click the subscription, and then click View Synchronization Status.

    2. Se l'agente non è in esecuzione, fare clic su Avvia nella finestra di dialogo Visualizza stato sincronizzazione .If the agent is not running click Start in the View Synchronization Status dialog box. Nella finestra di dialogo verranno visualizzati messaggi informativi relativi alla convalida.The dialog box will display informational messages regarding validation.

      Se non viene visualizzato alcun messaggio attinente, l'agente deve aver già registrato un messaggio successivo.If you do not see any messages regarding validation, the agent has already logged a subsequent message. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica.In this case, view the validation results in Replication Monitor. Per ulteriori informazioni, vedere le procedure per Monitoraggio replica in questo argomento.For more information, see the Replication Monitor how to procedures in this topic.

Per convalidare i dati di una singola sottoscrizione di una pubblicazione di tipo merge (Management Studio)To validate data for a single subscription to a merge publication (Management Studio)

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studioe quindi espandere il nodo del server.Connect to the Publisher in SQL Server Management StudioSQL Server Management 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 convalidare le sottoscrizioni, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Convalida sottoscrizione.Expand the publication for which you want to validate subscriptions, right-click the subscription, and then click Validate Subscription.

  4. Nella finestra di dialogo Convalida sottoscrizione selezionare Convalida la sottoscrizione.In the Validate Subscription dialog box, select Validate this subscription.

  5. Per specificare il tipo di convalida da eseguire (solo conteggio delle righe o conteggio delle righe e valori di checksum), fare clic su Opzionie quindi specificare le opzioni nella finestra di dialogo Opzioni di convalida delle sottoscrizioni .To specify the type of validation to perform (row count, or row count and checksum) click Options, and then specify options in the Subscription Validation Options dialog box.

  6. Fare clic su OK.Click OK.

  7. I risultati della convalida possono essere visualizzati in Monitoraggio replica o nella finestra di dialogo Visualizza stato sincronizzazione .View validation results in Replication Monitor or the View Synchronization Status dialog box:

    1. Espandere la pubblicazione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza stato sincronizzazione.Expand the publication, right-click the subscription, and then click View Synchronization Status.

    2. Se l'agente non è in esecuzione, fare clic su Avvia nella finestra di dialogo Visualizza stato sincronizzazione .If the agent is not running, click Start in the View Synchronization Status dialog box. Nella finestra di dialogo verranno visualizzati messaggi informativi relativi alla convalida.The dialog box will display informational messages regarding validation.

      Se non viene visualizzato alcun messaggio attinente, l'agente deve aver già registrato un messaggio successivo.If you do not see any messages regarding validation, the agent has already logged a subsequent message. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica.In this case, view the validation results in Replication Monitor. Per ulteriori informazioni, vedere le procedure per Monitoraggio replica in questo argomento.For more information, see the Replication Monitor how to procedures in this topic.

Per convalidare i dati per tutte le sottoscrizioni di una pubblicazione di tipo merge (Management Studio)To validate data for all subscriptions to a merge publication (Management Studio)

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studioe quindi espandere il nodo del server.Connect to the Publisher in SQL Server Management StudioSQL Server Management 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 si desidera convalidare le sottoscrizioni e quindi scegliere Convalida tutte le sottoscrizioni.Right-click the publication for which you want to validate subscriptions, and then click Validate All Subscriptions.

  4. Nella finestra di dialogo Convalida tutte le sottoscrizioni specificare il tipo di convalida da eseguire (solo conteggio delle righe o conteggio delle righe e valori di checksum).In the Validate All Subscriptions dialog box, specify the type of validation to perform (row count, or row count and checksum).

  5. Fare clic su OK.Click OK.

  6. I risultati della convalida possono essere visualizzati in Monitoraggio replica o nella finestra di dialogo Visualizza stato sincronizzazione .View validation results in Replication Monitor or the View Synchronization Status dialog box. Eseguire la procedura seguente per ogni sottoscrizione:For each subscription:

    1. Espandere la pubblicazione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza stato sincronizzazione.Expand the publication, right-click the subscription, and then click View Synchronization Status.

    2. Se l'agente non è in esecuzione, fare clic su Avvia nella finestra di dialogo Visualizza stato sincronizzazione .If the agent is not running, click Start in the View Synchronization Status dialog box. Nella finestra di dialogo verranno visualizzati messaggi informativi relativi alla convalida.The dialog box will display informational messages regarding validation.

      Se non viene visualizzato alcun messaggio attinente, l'agente deve aver già registrato un messaggio successivo.If you do not see any messages regarding validation, the agent has already logged a subsequent message. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica.In this case, view the validation results in Replication Monitor. Per ulteriori informazioni, vedere le procedure per Monitoraggio replica in questo argomento.For more information, see the Replication Monitor how to procedures in this topic.

Per convalidare i dati per tutte le sottoscrizioni push di una pubblicazione transazionale (Monitoraggio replica)To validate data for all push subscriptions to a transactional publication (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 si desidera convalidare le sottoscrizioni e quindi scegliere Convalida sottoscrizioni.Right-click the publication for which you want to validate subscriptions, and then click Validate Subscriptions.

  3. Nella finestra di dialogo Convalida sottoscrizioni selezionare le sottoscrizioni da convalidare:In the Validate Subscriptions dialog box, select which subscriptions to validate:

    • Selezionare Convalida tutte le sottoscrizioni SQL Server.Select Validate all SQL Server subscriptions.

    • Selezionare Convalida le sottoscrizioni seguentie quindi scegliere una o più sottoscrizioni.Select Validate the following subscriptions, and then select one or more subscriptions.

  4. Per specificare il tipo di convalida da eseguire (solo conteggio delle righe o conteggio delle righe e valori di checksum), fare clic su Opzioni di convalidae quindi specificare le opzioni nella finestra di dialogo Opzioni di convalida delle sottoscrizioni .To specify the type of validation to perform (row count, or row count and checksum) click Validation Options, and then specify options in the Subscription Validation Options dialog box.

  5. Fare clic su OK.Click OK.

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

  7. Visualizzare i risultati della convalida.View validation results. Eseguire la procedura seguente per ogni sottoscrizione push:For each push subscription:

    1. Se l'agente non è in esecuzione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Avvia sincronizzazione.If the agent is not running, right-click the subscription, and then click Start Synchronizing.

    2. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza dettagli.Right-click the subscription, and then click View Details.

    3. Visualizzare le informazioni nella scheda Cronologia server di distribuzione - Sottoscrittore all'interno dell'area di testo Azioni nella sessione selezionata .View information on the Distributor to Subscriber History tab in the Actions in the selected session text area.

Per convalidare i dati di una singola sottoscrizione push di una pubblicazione di tipo merge (Monitoraggio replica)To validate data for a single push subscription to a merge publication (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 convalidare e quindi scegliere Convalida sottoscrizione.Right-click the subscription you want to validate, and then click Validate Subscription.

  4. Nella finestra di dialogo Convalida sottoscrizione selezionare Convalida la sottoscrizione.In the Validate Subscription dialog box, select Validate this subscription.

  5. Per specificare il tipo di convalida da eseguire (solo conteggio delle righe o conteggio delle righe e valori di checksum), fare clic su Opzionie quindi specificare le opzioni nella finestra di dialogo Opzioni di convalida delle sottoscrizioni .To specify the type of validation to perform (row count, or row count and checksum) click Options, and then specify options in the Subscription Validation Options dialog box.

  6. Fare clic su OK.Click OK.

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

  8. Visualizzare i risultati della convalida:View validation results:

    1. Se l'agente non è in esecuzione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Avvia sincronizzazione.If the agent is not running, right-click the subscription, and then click Start Synchronizing.

    2. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza dettagli.Right-click the subscription, and then click View Details.

    3. Visualizzare le informazioni nella scheda Cronologia sincronizzazione all'interno dell'area di testo Ultimo messaggio della sessione selezionata .View information on the Synchronization History tab in the Last message of the selected session text area.

Per convalidare i dati per tutte le sottoscrizioni push di una pubblicazione di tipo merge (Monitoraggio replica)To validate data for all push subscriptions to a merge publication (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 si desidera convalidare le sottoscrizioni e quindi scegliere Convalida tutte le sottoscrizioni.Right-click the publication for which you want to validate subscriptions, and then click Validate All Subscriptions.

  3. Nella finestra di dialogo Convalida tutte le sottoscrizioni specificare il tipo di convalida da eseguire (solo conteggio delle righe o conteggio delle righe e valori di checksum).In the Validate All Subscriptions dialog box, specify the type of validation to perform (row count, or row count and checksum).

  4. Fare clic su OK.Click OK.

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

  6. Visualizzare i risultati della convalida.View validation results. Eseguire la procedura seguente per ogni sottoscrizione push:For each push subscription:

    1. Se l'agente non è in esecuzione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Avvia sincronizzazione.If the agent is not running, right-click the subscription, and then click Start Synchronizing.

    2. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza dettagli.Right-click the subscription, and then click View Details.

    3. Visualizzare le informazioni nella scheda Cronologia sincronizzazione all'interno dell'area di testo Ultimo messaggio della sessione selezionata .View information on the Synchronization History tab in the Last message of the selected session text area.

Utilizzo di Transact-SQL Using Transact-SQL

Per convalidare i dati per tutti gli articoli in una pubblicazione transazionaleTo validate data for all articles in a transactional publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_publication_validation (Transact-SQL).At the Publisher on the publication database, execute sp_publication_validation (Transact-SQL). Specificare @publication e uno dei valori riportati di seguito per @rowcount_only.Specify @publication and one of the following values for @rowcount_only:

    • 1 : convalida solo mediante conteggio delle righe (impostazione predefinita).1 - rowcount check only (the default)

    • 2 : convalida mediante conteggio delle righe e checksum binario.2 - rowcount and binary checksum.

    Nota

    Quando si esegue sp_publication_validation (Transact-SQL), sp_article_validation (Transact-SQL) viene eseguito per ogni articolo nella pubblicazione.When you execute sp_publication_validation (Transact-SQL), sp_article_validation (Transact-SQL) is executed for each article in the publication. Per eseguire correttamente sp_publication_validation (Transact-SQL) è necessario disporre delle autorizzazioni SELECT per tutte le colonne nelle tabelle di base pubblicate.To successfully execute sp_publication_validation (Transact-SQL), you must have SELECT permissions on all columns in the published base tables.

  2. (Facoltativo) Avviare l'agente di distribuzione per ogni sottoscrizione, se non è già in esecuzione.(Optional) Start the Distribution Agent for each subscription if it is not already running. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  3. Verificare l'output dell'agente per il risultato della convalida.Check the agent output for the result of the validation. Per altre informazioni, vedere Convalidare i dati replicati.For more information, see Validate Replicated Data.

Per convalidare i dati per un singolo articolo in una pubblicazione transazionaleTo validate data for a single article in a transactional publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_article_validation (Transact-SQL).At the Publisher on the publication database, execute sp_article_validation (Transact-SQL). Specificare @publication, il nome dell'articolo per @articlee uno dei valori riportati di seguito per @rowcount_only.Specify @publication, the name of the article for @article, and one of the following values for @rowcount_only:

    • 1 : convalida solo mediante conteggio delle righe (impostazione predefinita).1 - Rowcount check only (the default)

    • 2 : convalida mediante conteggio delle righe e checksum binario.2 - Rowcount and binary checksum.

    Nota

    Per eseguire correttamente sp_article_validation (Transact-SQL), è necessario disporre delle autorizzazioni SELECT per tutte le colonne nella tabella di base pubblicata.To successfully execute sp_article_validation (Transact-SQL), you must have SELECT permissions on all columns in the published base table.

  2. (Facoltativo) Avviare l'agente di distribuzione per ogni sottoscrizione, se non è già in esecuzione.(Optional) Start the Distribution Agent for each subscription if it is not already running. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  3. Verificare l'output dell'agente per il risultato della convalida.Check the agent output for the result of the validation. Per altre informazioni, vedere Convalidare i dati replicati.For more information, see Validate Replicated Data.

Per convalidare i dati per un singolo Sottoscrittore di una pubblicazione transazionaleTo validate data for a single subscriber to a transactional publication

  1. Nel database di pubblicazione del server di pubblicazione aprire una transazione esplicita usando BEGIN TRANSACTION (Transact-SQL).At the Publisher on the publication database, open an explicit transaction using BEGIN TRANSACTION (Transact-SQL).

  2. Nel database di pubblicazione del server di pubblicazione eseguire sp_marksubscriptionvalidation (Transact-SQL).At the Publisher on the publication database, execute sp_marksubscriptionvalidation (Transact-SQL). Specificare la pubblicazione per @publication, il nome del Sottoscrittore per @subscribere il nome del database di sottoscrizione per @destination_db.Specify the publication for @publication, the name of the Subscriber for @subscriber, and the name of the subscription database for @destination_db.

  3. (Facoltativo) Ripetere il passaggio 2 per ciascuna sottoscrizione da convalidare.(Optional) Repeat step 2 for each subscription being validated.

  4. Nel database di pubblicazione del server di pubblicazione eseguire sp_article_validation (Transact-SQL).At the Publisher on the publication database, execute sp_article_validation (Transact-SQL). Specificare @publication, il nome dell'articolo per @articlee uno dei valori riportati di seguito per @rowcount_only.Specify @publication, the name of the article for @article, and one of the following values for @rowcount_only:

    • 1 : convalida solo mediante conteggio delle righe (impostazione predefinita).1 - Rowcount check only (the default)

    • 2 : convalida mediante conteggio delle righe e checksum binario.2 - Rowcount and binary checksum.

    Nota

    Per eseguire correttamente sp_article_validation (Transact-SQL), è necessario disporre delle autorizzazioni SELECT per tutte le colonne nella tabella di base pubblicata.To successfully execute sp_article_validation (Transact-SQL), you must have SELECT permissions on all columns in the published base table.

  5. Nel database di pubblicazione del server di pubblicazione eseguire il commit della transazione usando COMMIT TRANSACTION (Transact-SQL).At the Publisher on the publication database, commit the transaction using COMMIT TRANSACTION (Transact-SQL).

  6. (Facoltativo) Ripetere i passaggi da 1 a 5 per ciascun articolo da convalidare.(Optional) Repeat steps 1 through 5 for each article being validated.

  7. (Facoltativo) Avviare l'agente di distribuzione, se non è già in esecuzione.(Optional) Start the Distribution Agent if it is not already running. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  8. Verificare l'output dell'agente per il risultato della convalida.Check the agent output for the result of the validation. Per altre informazioni, vedere Validate Data at the Subscriber.For more information, see Validate Data at the Subscriber.

Per convalidare i dati in tutte le sottoscrizioni di una pubblicazione di tipo mergeTo validate data in all subscriptions to a merge publication

  1. (Facoltativo) Nel database di pubblicazione del server di pubblicazione eseguire sp_validatemergepublication (Transact-SQL).At the Publisher on the publication database, execute sp_validatemergepublication (Transact-SQL). Specificare @publication e uno dei valori riportati di seguito per @level.Specify @publication and one of the following values for @level:

    • 1 : convalida solo mediante conteggio delle righe.1 - Rowcount-only validation.

    • 3 : convalida mediante conteggio delle righe e checksum binario.3 - Rowcount binary checksum validation.

      Tutte le sottoscrizioni vengono contrassegnate per la convalida.This marks all subscriptions for validation.

  2. Avviare l'agente di merge per ciascuna sottoscrizione.Start the merge agent for each subscription. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  3. Verificare l'output dell'agente per il risultato della convalida.Check the agent output for the result of the validation. Per altre informazioni, vedere Validate Data at the Subscriber.For more information, see Validate Data at the Subscriber.

Per convalidare i dati nelle sottoscrizioni selezionate di una pubblicazione di tipo mergeTo validate data in selected subscriptions to a merge publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_validatemergesubscription (Transact-SQL).At the Publisher on the publication database, execute sp_validatemergesubscription (Transact-SQL). Specificare @publication, il nome del Sottoscrittore per @subscriber, il nome del database di sottoscrizione per @subscriber_dbe uno dei valori riportati di seguito per @level.Specify @publication, the name of the Subscriber for @subscriber, the name of the subscription database for @subscriber_db, and one of the following values for @level:

    • 1 : convalida solo mediante conteggio delle righe.1 - Rowcount-only validation.

    • 3 : convalida mediante conteggio delle righe e checksum binario.3 - Rowcount binary checksum validation.

      La sottoscrizione selezionata viene contrassegnata per la convalida.This marks the selected subscription for validation.

  2. Avviare l'agente di merge per ciascuna sottoscrizione.Start the merge agent for each subscription. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  3. Verificare l'output dell'agente per il risultato della convalida.Check the agent output for the result of the validation.

  4. Ripetere i passaggi da 1 a 3 per ciascuna sottoscrizione da convalidare.Repeat steps 1 through 3 for each subscription being validated.

Nota

È inoltre possibile convalidare una sottoscrizione di una pubblicazione di tipo merge alla fine di una sincronizzazione, specificando il parametro -Validate al momento dell'esecuzione di Replication Merge Agent.A subscription to a merge publication can also be validated at the end of a synchronization by specifying the -Validate parameter when running the Replication Merge Agent.

Per convalidare i dati in una sottoscrizione utilizzando i parametri dell'agente di mergeTo validate data in a subscription using Merge Agent parameters

  1. Avviare l'agente di merge nel Sottoscrittore (sottoscrizione pull) o nel server di distribuzione (sottoscrizione push) dal prompt dei comandi, mediante una delle modalità indicate di seguito.Start the Merge Agent at the Subscriber (pull subscription) or at the Distributor (push subscription) from the command prompt in one of the following ways.

    • Specificare il valore 1 (conteggio delle righe) o 3 (conteggio delle righe e checksum binario) per il parametro -Validate .Specifying a value of 1 (rowcount) or 3 (rowcount and binary checksum) for the -Validate parameter.

    • Specificare la convalida mediante conteggio delle righe o la convalida mediante conteggio delle righe e checksum per il parametro -ProfileName .Specifying rowcount validation or rowcount and checksum validation for the -ProfileName parameter.

      Per ulteriori informazioni, vedere Synchronize a Pull Subscription o Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription or Synchronize a Push Subscription.

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

La replica consente di utilizzare gli oggetti RMO (Replication Management Objects) per convalidare a livello di programmazione la corrispondenza tra i dati nel Sottoscrittore e quelli nel server di pubblicazione.Replication enables you to use Replication Management Objects (RMO) to programmatically validate that data at the Subscriber matches data at the Publisher. Gli oggetti utilizzati variano in base al tipo di topologia di replica.The objects you use depend on the type of replication topology. La replica transazionale richiede la convalida di tutte le sottoscrizioni di una pubblicazione.Transactional replication requires validation of all subscriptions to a publication.

Nota

Ad esempio, vedere Esempio (RMO)più avanti in questa sezione.For an example, see Example (RMO), later in this section.

Per convalidare i dati per tutti gli articoli in una pubblicazione transazionaleTo validate data for all articles in 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 TransPublication .Create an instance of the TransPublication class. Impostare le proprietà Name e DatabaseName per la pubblicazione.Set the Name and DatabaseName properties for the publication. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.Set the ConnectionContext property to the connection created in step 1.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà rimanenti dell'oggetto.Call the LoadProperties method to get the remaining properties of the object. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Chiamare il metodo ValidatePublication .Call the ValidatePublication method. Passare quanto segue:Pass the following:

    • ValidationOption

    • ValidationMethod

    • Un valore booleano che indica se l'agente di distribuzione deve essere arrestato al termine della convalida.A Boolean that indicates whether to stop the Distribution Agent after validation is completed.

      Gli articoli vengono contrassegnati per la convalida.This marks the articles for validation.

  5. Se non è già in esecuzione, avviare l'agente di distribuzione per sincronizzare ciascuna sottoscrizione.If not already running, start the Distribution Agent to synchronize each subscription. Per ulteriori informazioni, vedere Synchronize a Push Subscription o Synchronize a Pull Subscription.For more information, see Synchronize a Push Subscription or Synchronize a Pull Subscription. Il risultato dell'operazione di convalida viene scritto nella cronologia dell'agente.The result of the validation operation is written to the agent history. Per altre informazioni, vedere Monitoring Replication.For more information, see Monitoring Replication.

Per convalidare i dati in tutte le sottoscrizioni di una pubblicazione di tipo mergeTo validate data in all subscriptions 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 MergePublication .Create an instance of the MergePublication class. Impostare le proprietà Name e DatabaseName per la pubblicazione.Set the Name and DatabaseName properties for the publication. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.Set the ConnectionContext property to the connection created in step 1.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà rimanenti dell'oggetto.Call the LoadProperties method to get the remaining properties of the object. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Chiamare il metodo ValidatePublication .Call the ValidatePublication method. Passare l'oggetto ValidationOptiondesiderato.Pass the desired ValidationOption.

  5. Eseguire l'agente di merge per avviare la convalida in ciascuna sottoscrizione oppure attendere la successiva esecuzione pianificata dell'agente.Run the Merge Agent for each subscription to start validation, or wait for the next scheduled agent run. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription. Il risultato dell'operazione di convalida viene scritto nella cronologia dell'agente, visualizzabile tramite Monitoraggio replica.The result of the validation operation is written to the agent history, which you view by using Replication Monitor. Per altre informazioni, vedere Monitoring Replication.For more information, see Monitoring Replication.

Per convalidare i dati in una singola sottoscrizione di una pubblicazione di tipo mergeTo validate data in a single 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 MergePublication .Create an instance of the MergePublication class. Impostare le proprietà Name e DatabaseName per la pubblicazione.Set the Name and DatabaseName properties for the publication. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.Set the ConnectionContext property to the connection created in step 1.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà rimanenti dell'oggetto.Call the LoadProperties method to get the remaining properties of the object. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Chiamare il metodo ValidateSubscription .Call the ValidateSubscription method. Passare il nome del Sottoscrittore e il database di sottoscrizione da convalidare e l'oggetto ValidationOptiondesiderato.Pass the name of the Subscriber and subscription database being validated and the desired ValidationOption.

  5. Eseguire l'agente di merge per avviare la convalida nella sottoscrizione oppure attendere la successiva esecuzione pianificata dell'agente.Run the Merge Agent for the subscription to start validation, or wait for the next scheduled agent run. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription. Il risultato dell'operazione di convalida viene scritto nella cronologia dell'agente, visualizzabile tramite Monitoraggio replica.The result of the validation operation is written to the agent history, which you view by using Replication Monitor. Per altre informazioni, vedere Monitoring Replication.For more information, see Monitoring Replication.

Esempio (RMO) Example (RMO)

In questo esempio tutte le sottoscrizioni di una pubblicazione transazionale vengono contrassegnate per la convalida mediante il conteggio delle righe.This example marks all subscriptions to a transactional publication for rowcount validation.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2012";

TransPublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

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

	// Set the required properties for the publication.
	publication = new TransPublication();
	publication.ConnectionContext = conn;
	publication.Name = publicationName;
	publication.DatabaseName = publicationDbName;

	// If we can't get the properties for this publication, 
	// throw an application exception.
	if (publication.LoadProperties())
	{
		// Initiate validataion for all subscriptions to this publication.
		publication.ValidatePublication(ValidationOption.RowCountOnly,
			ValidationMethod.ConditionalFast, false);

		// If not already running, start the Distribution Agent at each 
		// Subscriber to synchronize and validate the subscriptions.
	}
	else
	{
		throw new ApplicationException(String.Format(
			"Settings could not be retrieved for the publication. " +
			"Ensure that the publication {0} exists on {1}.",
			publicationName, publisherName));
	}
}
catch (Exception ex)
{
	// Do error handling here.
	throw new ApplicationException(
		"Subscription validation could not be initiated.", ex);
}
finally
{
	conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2012"

Dim publication As TransPublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

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

    ' Set the required properties for the publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then

        ' Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly, _
         ValidationMethod.ConditionalFast, False)

        ' If not already running, start the Distribution Agent at each 
        ' Subscriber to synchronize and validate the subscriptions.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
     "Subscription validation could not be initiated.", ex)
Finally
    conn.Disconnect()
End Try

In questo esempio una sottoscrizione specifica di una pubblicazione di tipo merge viene contrassegnata per la convalida mediante il conteggio delle righe.This example marks a specific subscription to a merge publication for rowcount validation.

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

MergePublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

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

	// Set the required properties for the publication.
	publication = new MergePublication();
	publication.ConnectionContext = conn;
	publication.Name = publicationName;
	publication.DatabaseName = publicationDbName;


	// If we can't get the properties for this merge publication, then throw an application exception.
	if (publication.LoadProperties())
	{
		// Initiate validation of the specified subscription.
		publication.ValidateSubscription(subscriberName,
			subscriptionDbName, ValidationOption.RowCountOnly);
		
		// Start the Merge Agent to synchronize and validate the subscription.
	}
	else
	{
		throw new ApplicationException(String.Format(
			"Settings could not be retrieved for the publication. " +
			"Ensure that the publication {0} exists on {1}.",
			publicationName, publisherName));
	}
}
catch (Exception ex)
{
	// Do error handling here.
	throw new ApplicationException(String.Format(
		"The subscription at {0} to the {1} publication could not " +
		"be validated.", subscriberName, publicationName), ex);
}
finally
{
	conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

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

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName, _
         subscriptionDbName, ValidationOption.RowCountOnly)

        ' Start the Merge Agent to synchronize and validate the subscription.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException(String.Format( _
     "The subscription at {0} to the {1} publication could not " + _
     "be validated.", subscriberName, publicationName), ex)
Finally
    conn.Disconnect()
End Try