Share via


Convalida dei dati replicati

Questo argomento descrive come convalidare i dati nel Sottoscrittore in SQL Server 2014 usando SQL Server Management Studio, Transact-SQL o RMO (Replication Management Objects).

La replica transazionale e la replica di tipo merge consentono di verificare che i dati presenti nel Sottoscrittore corrispondano ai dati nel server di pubblicazione. La convalida può essere eseguita per sottoscrizioni specifiche o per tutte le sottoscrizioni di una pubblicazione. Specificare uno dei tipi seguenti di convalida dei dati, che verrà eseguita dall'agente di distribuzione o dall'agente di merge alla successiva sincronizzazione:

  • Solo conteggio righe. Questo tipo di convalida verifica se la tabella nel Sottoscrittore ha lo stesso numero di righe della tabella nel server di pubblicazione, ma non verifica che il contenuto delle righe corrisponda. La convalida del conteggio delle righe è un controllo non approfondito che consente comunque di evidenziare eventuali problemi dei dati.
  • Conteggio delle righe e checksum binario. Oltre al conteggio delle righe nel server di pubblicazione e nel Sottoscrittore, viene calcolato il checksum di tutti i dati tramite lo specifico algoritmo di checksum. In caso di esito negativo durante il conteggio delle righe il checksum non viene eseguito.

Oltre a verificare che i dati nel Sottoscrittore corrispondano ai dati nel server di pubblicazione, la replica di tipo merge consente di verificare che i dati vengano partizionati correttamente per ogni Sottoscrittore. Per altre informazioni, vedere Convalidare le informazioni sulle partizioni per un Sottoscrittore di tipo merge.

Funzionamento della convalida dei dati

SQL Server convalida i dati calcolando un conteggio di righe o un checksum nel server di pubblicazione e quindi confrontando tali valori con il conteggio o il checksum delle righe calcolato nel Sottoscrittore. Viene calcolato un solo valore per l'intera tabella di pubblicazione e un solo valore per l'intera tabella di sottoscrizione. I dati delle colonne di tipo text, ntext o image non vengono inclusi nei calcoli.

Durante l'esecuzione del calcolo vengono attivati temporaneamente i blocchi condivisi sulle tabelle per le quali viene eseguito il conteggio delle righe o il calcolo del checksum. Il calcolo viene comunque completato e i blocchi condivisi vengono subito rimossi.

Quando si utilizzano valori checksum binari, il controllo di ridondanza ciclico (CRC) a 32 bit viene eseguito su ogni colonna anziché sulla riga fisica di una pagina di dati. Le colonne possono essere pertanto ordinate fisicamente in qualsiasi modo nella pagina di dati e al medesimo tempo ottenere lo stesso CRC per la riga. La convalida mediante checksum binario può essere utilizzata quando alla pubblicazione sono applicati filtri di riga o di colonna.

La convalida dei dati è un processo suddiviso in tre parti:

  1. Una sottoscrizione o tutte le sottoscrizioni di una pubblicazione vengono contrassegnate per la convalida. Contrassegnare le sottoscrizioni per la convalida nella finestra di dialogo Convalida sottoscrizione, Convalida sottoscrizioni e Convalida tutte le sottoscrizioni , disponibili nella cartella Pubblicazioni locali e nella cartella Sottoscrizioni locali in MicrosoftSQL 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. Per informazioni sull'avvio di Monitoraggio replica, vedere Avviare Monitoraggio replica.

  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. 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.

  3. I risultati della convalida possono essere visualizzati nelle finestre seguenti:

    • 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.
    • Nella finestra di dialogo Visualizza stato sincronizzazione in Management Studio.

Considerazioni e restrizioni

  • Le procedure relative a Monitoraggio replica riguardano solo le sottoscrizioni push in quanto le sottoscrizioni pull non possono essere sincronizzate in Monitoraggio replica. È tuttavia possibile contrassegnare una sottoscrizione per la convalida e visualizzare i risultati della convalida per le sottoscrizioni pull in Monitoraggio replica.
  • 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. Per confrontare i dati nel server di pubblicazione e nel Sottoscrittore, utilizzare la tablediff Utility. Per altre informazioni sull'uso di questa utilità con dati replicati, vedere Confrontare le tabelle replicate per le differenze (programmazione della replica).

Durante la convalida dei dati è opportuno considerare gli aspetti seguenti:

  • Prima di eseguire la convalida dei dati è necessario arrestare tutte le attività di aggiornamento nei Sottoscrittori. Non è necessario arrestare l'eventuale aggiornamento nel server di pubblicazione durante la convalida.

  • Poiché la convalida di set di dati estesi mediante checksum e checksum binari può richiedere quantità elevate di risorse di elaborazione, è opportuno pianificare la convalida in modo che venga eseguita nei periodi di attività minore nei server utilizzati per la replica.

  • La replica convalida soltanto le tabelle e non verifica che gli articoli solo schema, ad esempio le stored procedure, presenti nel server di pubblicazione e nel Sottoscrittore corrispondano.

  • Il checksum binario può essere utilizzato per qualsiasi tabella pubblicata. Non è possibile convalidare mediante il calcolo del checksum tabelle con filtri colonne o strutture di tabelle logiche con offset di colonna diversi, a causa di istruzioni di tipo ALTER TABLE tramite cui vengono eliminate o aggiunte colonne.

  • La convalida della replica usa le checksum funzioni e binary_checksum . Per informazioni sul comportamento, vedere CHECKSUM (Transact-SQL) e BINARY_CHECKSUM (Transact-SQL).

  • La convalida eseguita mediante checksum o checksum binario può segnalare erroneamente un problema se nel Sottoscrittore vi sono tipi di dati diversi rispetto al server di pubblicazione. Ciò può verificarsi se si effettua una delle operazioni indicate di seguito.

    • Impostare in modo esplicito le opzioni dello schema per eseguire il mapping dei tipi di dati per le versioni precedenti di SQL Server.
    • Impostare il livello di compatibilità della pubblicazione per una pubblicazione di tipo merge su una versione precedente di SQL Server e le tabelle pubblicate contengono uno o più tipi di dati di cui è necessario eseguire il mapping per questa versione.
    • Inizializzazione manuale di una sottoscrizione, in caso di utilizzo di tipi di dati diversi nel Sottoscrittore.
  • Le convalide mediante calcoli del checksum e checksum binario non sono supportate per la replica transazionale di sottoscrizioni trasformabili.

  • La convalida non è supportata per i dati replicati in Sottoscrittori non SQL Server.

Risultati della convalida dei dati

Al termine della convalida nell'agente di distribuzione o nell'agente di merge vengono registrati messaggi relativi all'esito positivo o negativo dell'operazione. Non vengono specificate le righe con esito negativo. Questi messaggi possono essere visualizzati nelle tabelle di sistema di SQL Server Management Studio, Monitoraggio replica e replica. Nell'argomento elencato sopra vengono illustrate le procedure di esecuzione della convalida e di visualizzazione dei risultati.

Per gestire gli errori di convalida, considerare quanto segue:

  • Configurare l'avviso di replica Replica: la convalida dei dati nel Sottoscrittore non è riuscita. , in modo che l'utente venga avvisato dell'errore. Per altre informazioni, vedere [Configurare gli avvisi di replica predefiniti (SQL Server Management Studio)(administration/configure-predefined-replication-alerts-sql-server-management-studio.md).

  • L'errore di convalida rappresenta un problema per l'applicazione utilizzata? Se sì, aggiornare manualmente i dati in modo che siano sincronizzati oppure reinizializzare la sottoscrizione:

Articoli nella replica transazionale

Utilizzare SQL Server Management Studio

  1. Connettersi al server di pubblicazione in SQL Server Management Studio e quindi espandere il nodo del server.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .

  3. Fare clic con il pulsante destro del mouse sulla pubblicazione di cui si desidera convalidare le sottoscrizioni e quindi scegliere Convalida sottoscrizioni.

  4. Nella finestra di dialogo Convalida sottoscrizioni selezionare le sottoscrizioni da convalidare:

    • Selezionare Convalida tutte le sottoscrizioni SQL Server.
    • Selezionare Convalida le sottoscrizioni seguentie quindi scegliere una o più sottoscrizioni.
  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 .

  6. Fare clic su OK.

  7. I risultati della convalida possono essere visualizzati in Monitoraggio replica o nella finestra di dialogo Visualizza stato sincronizzazione . Eseguire la procedura seguente per ogni sottoscrizione:

    1. Espandere la pubblicazione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza stato sincronizzazione.
    2. Se l'agente non è in esecuzione, fare clic su Avvia nella finestra di dialogo Visualizza stato sincronizzazione . Nella finestra di dialogo verranno visualizzati messaggi informativi relativi alla convalida.

    Se non viene visualizzato alcun messaggio attinente, l'agente deve aver già registrato un messaggio successivo. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica. Per ulteriori informazioni, vedere le procedure per Monitoraggio replica in questo argomento.

Uso di Transact-SQL (T-SQL)

Tutti gli articoli

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_publication_validation (Transact-SQL). Specificare @publication e uno dei valori riportati di seguito per @rowcount_only.

    • 1 : convalida solo mediante conteggio delle righe (impostazione predefinita).
    • 2 : convalida mediante conteggio delle righe e checksum binario.

    Nota

    Quando si esegue sp_publication_validation (Transact-SQL),sp_article_validation (Transact-SQL) viene eseguito per ogni articolo della pubblicazione. Per eseguire correttamente sp_publication_validation (Transact-SQL), è necessario disporre delle autorizzazioni SELECT per tutte le colonne nelle tabelle di base pubblicate.

  2. (Facoltativo) Avviare l'agente di distribuzione per ogni sottoscrizione, se non è già in esecuzione. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.

  3. Verificare l'output dell'agente per il risultato della convalida. Per altre informazioni, vedere Convalidare i dati replicati.

Singolo articolo

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_article_validation (Transact-SQL). Specificare @publication, il nome dell'articolo per @articlee uno dei valori riportati di seguito per @rowcount_only.

    • 1 : convalida solo mediante conteggio delle righe (impostazione predefinita).
    • 2 : convalida mediante conteggio delle righe e checksum binario.

    Nota

    Per eseguire correttamente sp_article_validation (Transact-SQL), è necessario disporre delle autorizzazioni SELECT per tutte le colonne della tabella di base pubblicata.

  2. (Facoltativo) Avviare l'agente di distribuzione per ogni sottoscrizione, se non è già in esecuzione. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.

  3. Verificare l'output dell'agente per il risultato della convalida. Per altre informazioni, vedere Convalidare i dati replicati.

Singolo sottoscrittore

  1. Nel database di pubblicazione del server di pubblicazione aprire una transazione esplicita usando BEGIN TRANSACTION (Transact-SQL).

  2. Nel database di pubblicazione del server di pubblicazione eseguire sp_marksubscriptionvalidation (Transact-SQL). Specificare la pubblicazione per @publication, il nome del Sottoscrittore per @subscribere il nome del database di sottoscrizione per @destination_db.

  3. (Facoltativo) Ripetere il passaggio 2 per ciascuna sottoscrizione da convalidare.

  4. Nel database di pubblicazione del server di pubblicazione eseguire sp_article_validation (Transact-SQL). Specificare @publication, il nome dell'articolo per @articlee uno dei valori riportati di seguito per @rowcount_only.

    • 1 : convalida solo mediante conteggio delle righe (impostazione predefinita).
    • 2 : convalida mediante conteggio delle righe e checksum binario.

    Nota

    Per eseguire correttamente sp_article_validation (Transact-SQL), è necessario disporre delle autorizzazioni SELECT per tutte le colonne della tabella di base pubblicata.

  5. Nel database di pubblicazione del server di pubblicazione eseguire il commit della transazione usando COMMIT TRANSACTION (Transact-SQL).

  6. (Facoltativo) Ripetere i passaggi da 1 a 5 per ciascun articolo da convalidare.

  7. (Facoltativo) Avviare l'agente di distribuzione, se non è già in esecuzione. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.

  8. Verificare l'output dell'agente per il risultato della convalida. Per altre informazioni, vedere Validate Data at the Subscriber.

Tutte le sottoscrizioni push in una pubblicazione transazionale

Uso di Monitoraggio replica

  1. In Monitoraggio replica espandere un gruppo di server di pubblicazione nel riquadro di sinistra e quindi espandere un server di pubblicazione.
  2. Fare clic con il pulsante destro del mouse sulla pubblicazione di cui si desidera convalidare le sottoscrizioni e quindi scegliere Convalida sottoscrizioni.
  3. Nella finestra di dialogo Convalida sottoscrizioni selezionare le sottoscrizioni da convalidare:
    • Selezionare Convalida tutte le sottoscrizioni SQL Server.
    • Selezionare Convalida le sottoscrizioni seguentie quindi scegliere una o più sottoscrizioni.
  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 .
  5. Fare clic su OK.
  6. Fare clic sulla scheda Tutte le sottoscrizioni .
  7. Visualizzare i risultati della convalida. Eseguire la procedura seguente per ogni sottoscrizione push:
    1. Se l'agente non è in esecuzione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Avvia sincronizzazione.
    2. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza dettagli.
    3. Visualizzare le informazioni nella scheda Cronologia server di distribuzione - Sottoscrittore all'interno dell'area di testo Azioni nella sessione selezionata .

Per una singola sottoscrizione di una pubblicazione di tipo merge

Utilizzare SQL Server Management Studio

  1. Connettersi al server di pubblicazione in SQL Server Management Studio e quindi espandere il nodo server.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .

  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.

  4. Nella finestra di dialogo Convalida sottoscrizione selezionare Convalida la sottoscrizione.

  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 .

  6. Fare clic su OK.

  7. I risultati della convalida possono essere visualizzati in Monitoraggio replica o nella finestra di dialogo Visualizza stato sincronizzazione .

    1. Espandere la pubblicazione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza stato sincronizzazione.
    2. Se l'agente non è in esecuzione, fare clic su Avvia nella finestra di dialogo Visualizza stato sincronizzazione . Nella finestra di dialogo verranno visualizzati messaggi informativi relativi alla convalida.

    Se non viene visualizzato alcun messaggio attinente, l'agente deve aver già registrato un messaggio successivo. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica. Per ulteriori informazioni, vedere le procedure per Monitoraggio replica in questo argomento.

Uso di Transact-SQL (T-SQL)

  1. Nel database di pubblicazione del server di pubblicazione eseguire 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.

    • 1 : convalida solo mediante conteggio delle righe.
    • 3 : convalida mediante conteggio delle righe e checksum binario.

    La sottoscrizione selezionata viene contrassegnata per la convalida.

  2. Avviare l'agente di merge per ciascuna sottoscrizione. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.

  3. Verificare l'output dell'agente per il risultato della convalida.

  4. Ripetere i passaggi da 1 a 3 per ciascuna sottoscrizione da convalidare.

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.

Per tutte le sottoscrizioni di una pubblicazione di tipo merge

Utilizzare SQL Server Management Studio

  1. Connettersi al server di pubblicazione in SQL Server Management Studio e quindi espandere il nodo server.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .

  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.

  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).

  5. Fare clic su OK.

  6. I risultati della convalida possono essere visualizzati in Monitoraggio replica o nella finestra di dialogo Visualizza stato sincronizzazione . Eseguire la procedura seguente per ogni sottoscrizione:

    1. Espandere la pubblicazione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza stato sincronizzazione.
    2. Se l'agente non è in esecuzione, fare clic su Avvia nella finestra di dialogo Visualizza stato sincronizzazione . Nella finestra di dialogo verranno visualizzati messaggi informativi relativi alla convalida.

    Se non viene visualizzato alcun messaggio attinente, l'agente deve aver già registrato un messaggio successivo. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica. Per ulteriori informazioni, vedere le procedure per Monitoraggio replica in questo argomento.

Uso di Transact-SQL (T-SQL)

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_validatemergepublication (Transact-SQL). Specificare @publication e uno dei valori riportati di seguito per @level.

    • 1 : convalida solo mediante conteggio delle righe.
    • 3 : convalida mediante conteggio delle righe e checksum binario.

    Tutte le sottoscrizioni vengono contrassegnate per la convalida.

  2. Avviare l'agente di merge per ciascuna sottoscrizione. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription.

  3. Verificare l'output dell'agente per il risultato della convalida. Per altre informazioni, vedere Validate Data at the Subscriber.

Per una singola sottoscrizione push di una pubblicazione di tipo merge

Uso di Monitoraggio replica

  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.
  2. Fare clic sulla scheda Tutte le sottoscrizioni .
  3. Fare clic con il pulsante destro del mouse sulla sottoscrizione che si desidera convalidare e quindi scegliere Convalida sottoscrizione.
  4. Nella finestra di dialogo Convalida sottoscrizione selezionare Convalida la sottoscrizione.
  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 .
  6. Fare clic su OK.
  7. Fare clic sulla scheda Tutte le sottoscrizioni .
  8. Visualizzare i risultati della convalida:
    1. Se l'agente non è in esecuzione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Avvia sincronizzazione.
    2. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza dettagli.
    3. Visualizzare le informazioni nella scheda Cronologia sincronizzazione all'interno dell'area di testo Ultimo messaggio della sessione selezionata .

Per tutte le sottoscrizioni push di una pubblicazione di tipo merge

Uso di Monitoraggio replica

  1. In Monitoraggio replica espandere un gruppo di server di pubblicazione nel riquadro di sinistra e quindi espandere un server di pubblicazione.
  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.
  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).
  4. Fare clic su OK.
  5. Fare clic sulla scheda Tutte le sottoscrizioni .
  6. Visualizzare i risultati della convalida. Eseguire la procedura seguente per ogni sottoscrizione push:
    1. Se l'agente non è in esecuzione, fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Avvia sincronizzazione.
    2. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Visualizza dettagli.
    3. Visualizzare le informazioni nella scheda Cronologia sincronizzazione all'interno dell'area di testo Ultimo messaggio della sessione selezionata .

Convalidare i dati usando i parametri agente di merge

  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.

    • Specificare il valore 1 (conteggio delle righe) o 3 (conteggio delle righe e checksum binario) per il parametro -Validate .
    • Specificare la convalida mediante conteggio delle righe o la convalida mediante conteggio delle righe e checksum per il parametro -ProfileName .

    Per ulteriori informazioni, vedere Synchronize a Pull Subscription o Synchronize a Push Subscription.

Utilizzo di RMO (Replication Management Objects)

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. Gli oggetti utilizzati variano in base al tipo di topologia di replica. La replica transazionale richiede la convalida di tutte le sottoscrizioni di una pubblicazione.

Nota

Ad esempio, vedere Esempio (RMO)più avanti in questa sezione.

Per convalidare i dati per tutti gli articoli in una pubblicazione transazionale

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .

  2. Creare un'istanza della classe TransPublication. Impostare le proprietà Name e DatabaseName per la pubblicazione. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.

  3. Chiamare il metodo LoadProperties per recuperare le proprietà rimanenti dell'oggetto. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.

  4. Chiamare il metodo ValidatePublication . Passare quanto segue:

    Gli articoli vengono contrassegnati per la convalida.

  5. Se non è già in esecuzione, avviare l'agente di distribuzione per sincronizzare ciascuna sottoscrizione. Per ulteriori informazioni, vedere Synchronize a Push Subscription o Synchronize a Pull Subscription. Il risultato dell'operazione di convalida viene scritto nella cronologia dell'agente. Per altre informazioni, vedere Monitoring Replication.

Per convalidare i dati in tutte le sottoscrizioni di una pubblicazione di tipo merge

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .
  2. Creare un'istanza della classe MergePublication. Impostare le proprietà Name e DatabaseName per la pubblicazione. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.
  3. Chiamare il metodo LoadProperties per recuperare le proprietà rimanenti dell'oggetto. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.
  4. Chiamare il metodo ValidatePublication . Passare l'oggetto ValidationOptiondesiderato.
  5. Eseguire l'agente di merge per avviare la convalida in ciascuna sottoscrizione oppure attendere la successiva esecuzione pianificata dell'agente. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription. Il risultato dell'operazione di convalida viene scritto nella cronologia dell'agente, visualizzabile tramite Monitoraggio replica. Per altre informazioni, vedere Monitoring Replication.

Per convalidare i dati in una singola sottoscrizione di una pubblicazione di tipo merge

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .
  2. Creare un'istanza della classe MergePublication. Impostare le proprietà Name e DatabaseName per la pubblicazione. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.
  3. Chiamare il metodo LoadProperties per recuperare le proprietà rimanenti dell'oggetto. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.
  4. Chiamare il metodo ValidateSubscription . Passare il nome del Sottoscrittore e il database di sottoscrizione da convalidare e l'oggetto ValidationOptiondesiderato.
  5. Eseguire l'agente di merge per avviare la convalida nella sottoscrizione oppure attendere la successiva esecuzione pianificata dell'agente. Per ulteriori informazioni, vedere Synchronize a Pull Subscription e Synchronize a Push Subscription. Il risultato dell'operazione di convalida viene scritto nella cronologia dell'agente, visualizzabile tramite Monitoraggio replica. Per altre informazioni, vedere Monitoring Replication.

Esempio (RMO)

In questo esempio tutte le sottoscrizioni di una pubblicazione transazionale vengono contrassegnate per la convalida mediante il conteggio delle righe.

// 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.

// 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