Convalidare i dati replicati

Si applica a:SQL Serverdatabase 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 replicazione transazionale e la replicazione di tipo merge consentono di verificare che i dati nel Sottoscrittore corrispondano ai dati nell'Autore. La convalida può essere eseguita per sottoscrizioni specifiche o per tutte le sottoscrizioni di una pubblicazione. Specificare uno dei seguenti tipi di convalida e l'Agente di distribuzione o l'Agente di merge convaliderà i dati alla successiva esecuzione.

  • 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 validazione del conteggio delle righe offre un approccio leggero alla validazione che può segnalare eventuali problemi nei dati.
  • Numero di righe e checksum binario. Oltre al conteggio delle righe nell'Editore e nel Sottoscrittore, viene calcolato un checksum di tutti i dati utilizzando l'algoritmo checksum. In caso di esito negativo durante il conteggio delle righe il checksum non viene eseguito.

Oltre a verificare che i dati del Sottoscrittore corrispondano a quelli del Server di pubblicazione, la replica di merge consente anche di verificare che i dati siano partizionati correttamente per ogni Sottoscrittore. Per altre informazioni, vedere Convalidare le informazioni sulle partizioni per un Sottoscrittore di tipo merge.

Nota

Istanza gestita di Azure SQL può essere un server di pubblicazione, un server di distribuzione e un sottoscrittore per la replica tramite 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 valida i dati calcolando un conteggio righe o un checksum nel Publisher e confrontando quindi tali valori con il conteggio righe o il checksum calcolati nel Subscriber. 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. Ciò consente che le colonne della tabella siano fisicamente disposte in qualsiasi ordine nella pagina dati, pur producendo 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:

    • Nelle finestre di dettaglio in Monitoraggio repliche: nella scheda Cronologia Distributore - Sottoscrittore per la replica transazionale e nella scheda Cronologia sincronizzazione per la replica di 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 valida solo le tabelle; non verifica se gli articoli di solo schema, ad esempio le procedure memorizzate, siano uguali nell'Editore e nel Sottoscrittore.
  • Il checksum binario può essere utilizzato per qualsiasi tabella pubblicata. Il checksum non può verificare tabelle con filtri sulle colonne o strutture logiche di tabella in cui gli offset delle colonne sono diversi (a causa di istruzioni ALTER TABLE che eliminano o aggiungono 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 tramite checksum binario o checksum può segnalare erroneamente un errore se i tipi di dati nel Sottoscrittore sono diversi da quelli nel Server di pubblicazione. Ciò può verificarsi se si effettua una delle operazioni indicate di seguito:
    • Impostare esplicitamente le opzioni dello schema per mappare i tipi di dati per le 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.
    • Inizializzare manualmente una sottoscrizione e utilizzare tipi di dati diversi nel Sottoscrittore.
  • Il checksum binario e le convalide del checksum non sono supportati per le sottoscrizioni trasformabili nella replica transazionale.
  • 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 in Monitoraggio replica i risultati della convalida delle sottoscrizioni pull.
  • 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 nell'Editore e nel Sottoscrittore, utilizzare l'utilità 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, l'Agente di distribuzione o l'Agente di merge registra messaggi relativi al successo o all'errore (la replica non indica quali righe non sono riuscite). È 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 della 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 visualizzi alcun messaggio relativo alla convalida, l'agente ha già registrato un messaggio successivo. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica. Per ulteriori informazioni, vedere le procedure di Replication Monitor in questo argomento.

Utilizzo di Transact-SQL

Tutti gli articoli

  1. Nel server di pubblicazione, nel database 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 - 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) Avvia 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 server di pubblicazione, nel database 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 - Conteggio 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) Avvia 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 server di pubblicazione, nel database di pubblicazione, aprire una transazione esplicita tramite BEGIN TRANSACTION (Transact-SQL).

  2. Nel server di pubblicazione, nel database 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 server di pubblicazione, nel database 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 - 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 server di pubblicazione, nel database 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 Replication Monitor

  1. In Monitoraggio replica, espandere un gruppo di server di pubblicazione nel riquadro sinistro, 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. Visualizza le informazioni nella scheda Cronologia dal server di distribuzione al Sottoscrittore nell'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 visualizzi alcun messaggio relativo alla convalida, l'agente ha già registrato un messaggio successivo. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica. Per ulteriori informazioni, vedere le procedure di Replication Monitor in questo argomento.

Per tutti gli abbonamenti a una pubblicazione 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 visualizzi alcun messaggio relativo alla convalida, l'agente ha già registrato un messaggio successivo. In questo caso, visualizzare i risultati della convalida in Monitoraggio replica. Per ulteriori informazioni, vedere le procedure di Replication Monitor in questo argomento.

Per una singola sottoscrizione push di una pubblicazione di tipo merge

Uso del Monitoraggio della replica

  1. In Monitoraggio della replica, espandere un gruppo di server di pubblicazione nel riquadro sinistro, 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 server di pubblicazione, nel database 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. Avvia 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 agente di merge.

Per tutte le sottoscrizioni push di una pubblicazione di tipo merge

Uso di Replication Monitor

  1. In Monitoraggio replica, espandere un gruppo di server di pubblicazione nel riquadro sinistro, 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.

    Questo contrassegna tutti gli abbonamenti per la convalida.

  2. Avvia 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 del conteggio righe o la convalida del conteggio 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 . Trasmetti 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'elemento desiderato ValidationOption.

  5. Eseguire l'Agente di merge per ogni sottoscrizione per avviare la convalida 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 . Specificare il nome del Sottoscrittore, il database di sottoscrizione da convalidare e il ValidationOption desiderato.

  5. Eseguire l'Agente di merge per la sottoscrizione per avviare la convalida 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

Procedure consigliate per l'amministrazione della replica