Convalidare i dati replicati

Si applica a: SQL Server database SQL di Azure

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

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:

  • Conteggio delle sole 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.

Nota

Istanza gestita di SQL di Azure può essere un server di pubblicazione, un server di distribuzione e un Sottoscrittore per la replica snapshot e transazionale. I database nel database SQL di Azure possono essere solo sottoscrittori push per la replica snapshot e transazionale. Per altre informazioni, vedere Replica transazionale con il database SQL di Azure e con Istanza gestita di SQL di Azure.

Funzionamento della convalida dei dati

SQL Server convalida i dati tramite il conteggio delle righe o il calcolo del checksum nel server di pubblicazione e nel Sottoscrittore e il successivo confronto dei risultati. 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, ntexto 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. Contrassegna le sottoscrizioni per la convalida nelle finestre di dialogo Convalida sottoscrizione, Convalida sottoscrizioni, e Convalida tutte le sottoscrizioni, disponibili dalle cartelle Pubblicazioni locali e Sottoscrizioni locali in Microsoft SQL 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

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.
  • Per la convalida della replica vengono utilizzate le funzioni checksum e binary_checksum . Per informazioni sul comportamento, vedi 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:
    • Impostazione esplicita delle opzioni per lo schema per l'esecuzione del mapping dei tipi di dati per versioni precedenti di SQL Server.
    • Impostazione del livello di compatibilità della pubblicazione per una pubblicazione di tipo merge su una versione precedente di SQL Server, qualora le tabelle pubblicate contengano 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.
  • 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 ulteriori informazioni sull'uso di questa utilità con i dati replicati, vedi Confronta tabelle replicate al fine di individuare le differenze (programmazione della replica).

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. È possibile visualizzare tali messaggi in SQL Server Management Studio, Monitoraggio replica e nelle tabelle di sistema di 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:

Articoli nella replica transazionale

Utilizzo di SQL Server Management Studio

  1. Connettiti al server di pubblicazione in SQL Server Management Studio e poi espandi 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 sottoscrizioni.
  4. Nella finestra di dialogo Convalida sottoscrizioni, seleziona 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. Seleziona 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.

Utilizzo di Transact-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 seguenti 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 nella 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, vedi Sincronizzare una Sottoscrizione pull e Sincronizzare una Sottoscrizione push.

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

Singolo articolo

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_article_validation (Transact-SQL). Specificare @publication, il nome dell'articolo per @article e uno dei valori seguenti 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 nella tabella di base pubblicata.

  2. (Facoltativo) Avviare l'agente di distribuzione per ogni sottoscrizione, se non è già in esecuzione. Per ulteriori informazioni, vedi Sincronizzare una Sottoscrizione pull e Sincronizzare una Sottoscrizione push.

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

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 @subscriber e 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 @article e uno dei valori seguenti 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 nella 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, vedi Sincronizzare una Sottoscrizione pull e Sincronizzare una Sottoscrizione push.

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

Tutte le sottoscrizioni push di 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. Seleziona 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

Utilizzo di SQL Server Management Studio

  1. Connettiti al server di pubblicazione in SQL Server Management Studio e poi espandi 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. Seleziona 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.

Per tutte le sottoscrizioni di una pubblicazione di tipo merge

Utilizzo di SQL Server Management Studio

  1. Connettiti al server di pubblicazione in SQL Server Management Studio e poi espandi 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. Seleziona 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.

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

Utilizzo di Transact-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_db e uno dei valori seguenti 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, vedi Sincronizzare una Sottoscrizione pull e Sincronizzare una Sottoscrizione push.

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

Utilizzo di Transact-SQL

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_validatemergepublication (Transact-SQL). Specificare @publication e uno dei valori seguenti 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, vedi Sincronizzare una Sottoscrizione pull e Sincronizzare una Sottoscrizione push.

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

Convalidare i dati usando i parametri dell'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, vedi Sincronizzare una Sottoscrizione pull e Sincronizzare una Sottoscrizione push. 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, vedi Sincronizzare una Sottoscrizione pull e Sincronizzare una Sottoscrizione push. 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 = "AdventureWorks2022";

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 = "AdventureWorks2022"

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 = "AdventureWorks2022";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";

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 = "AdventureWorks2022"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"

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

Vedi anche

Best Practices for Replication Administration