Share via


Monitoraggio della replica a livello di programmazione

Monitoraggio replica è uno strumento grafico che consente di monitorare una topologia di replica. È possibile accedere agli stessi dati di monitoraggio a livello di codice usando stored procedure di replica Transact-SQL o oggetti di gestione della replica (RMO). Tali oggetti consentono di programmare le attività seguenti:

  • Monitoraggio dello stato dei server di pubblicazione, delle pubblicazioni e delle sottoscrizioni.

  • Monitoraggio delle sessioni dell'agente di merge in uno o più Sottoscrittori.

  • Monitoraggio dei comandi transazionali in attesa di essere applicati a uno o più Sottoscrittori.

  • Definizione delle metriche di soglia che determinano la necessità di un intervento per una pubblicazione.

  • Monitoraggio dello stato dei token di traccia.

Contenuto dell'argomento:

Transact-SQL

Oggetti RMO (Replication Management Objects)

Transact-SQL

Per monitorare i server di pubblicazione, le pubblicazioni e le sottoscrizioni dal database di distribuzione

  1. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorhelppublisher. Vengono restituite le informazioni di monitoraggio per tutti i server di pubblicazione che utilizzano il server di distribuzione. Per limitare il set di risultati a un singolo server di pubblicazione, specificare @publisher.

  2. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorhelppublication. Vengono restituite le informazioni di monitoraggio per tutte le pubblicazioni che utilizzano il server di distribuzione. Per limitare il set di risultati a un singolo server di pubblicazione, pubblicazione o database pubblicato, specificare rispettivamente @publisher, @publication o @publisher_db.

  3. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorhelpsubscription. Vengono restituite le informazioni di monitoraggio per tutte le sottoscrizioni che utilizzano il server di distribuzione. Per limitare il set di risultati alle sottoscrizioni appartenenti a un singolo server di pubblicazione, pubblicazione o database pubblicato, specificare rispettivamente @publisher, @publication o @publisher_db.

Per monitorare i comandi transazionali in attesa di essere applicati al Sottoscrittore

  1. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorsubscriptionpendingcmds. Vengono restituite le informazioni di monitoraggio per tutti i comandi in sospeso per tutte le sottoscrizioni che utilizzano il server di distribuzione. Per limitare il set di risultati ai comandi in sospeso per le sottoscrizioni appartenenti a un singolo server di pubblicazione, sottoscrittore o database pubblicato, specificare rispettivamente @publisher, @subscriber, @publication o @publisher_db.

Per monitorare le modifiche di tipo merge in attesa di essere caricate o scaricate

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_showpendingchanges. Viene restituito un set di risultati in cui sono indicate le informazioni sulle modifiche in attesa di essere replicate nei Sottoscrittori. Per limitare il set di risultati alle modifiche appartenenti a una singola pubblicazione o articolo, specificare rispettivamente @publication o @article.

  2. Nel database di sottoscrizione del Sottoscrittore eseguire sp_showpendingchanges. Viene restituito un set di risultati in cui sono indicate le informazioni sulle modifiche in attesa di essere replicate nel server di pubblicazione. Per limitare il set di risultati alle modifiche appartenenti a una singola pubblicazione o articolo, specificare rispettivamente @publication o @article.

Per monitorare sessioni dell'agente di merge

  1. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorhelpmergesession. Vengono restituite le informazioni di monitoraggio, Session_idincluso, relative a tutte le sessioni dell'agente di merge per tutte le sottoscrizioni che utilizzano il server di distribuzione. È anche possibile ottenere il valore Session_id eseguendo una query sulla tabella di sistema MSmerge_sessions .

  2. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorhelpmergesessiondetail. Specificare un valore Session_id dal passaggio 1 per @session_id. Vengono visualizzate informazioni di monitoraggio dettagliate sulla sessione.

  3. Ripetere il passaggio 2 per ciascuna sessione desiderata.

Per monitorare le sessioni dell'agente di merge per le sottoscrizioni pull dal Sottoscrittore

  1. Nel database di sottoscrizione del Sottoscrittore eseguire sp_replmonitorhelpmergesession. Per una determinata sottoscrizione, specificare @publisher, @publication e il nome del database di pubblicazione per @publisher_db. Vengono restituite le informazioni di monitoraggio per le ultime cinque sessioni dell'agente di merge della sottoscrizione. Tenere presente il valore di Session_id per le sessioni desiderate nel set di risultati.

  2. Nel database di sottoscrizione del Sottoscrittore eseguire sp_replmonitorhelpmergesession. Specificare un valore Session_id dal passaggio 1 per @session_id. Vengono visualizzate informazioni di monitoraggio dettagliate sulla sessione.

  3. Ripetere il passaggio 2 per ciascuna sessione desiderata.

Per visualizzare e modificare le misurazioni del valore soglia di monitoraggio per una pubblicazione

  1. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorhelppublicationthresholds. Vengono restituiti i valore soglia di monitoraggio impostati per tutte le pubblicazioni che utilizzano il server di distribuzione. Per limitare il set di risultati per monitorare le soglie alle pubblicazioni appartenenti a un singolo server di pubblicazione o a un singolo database pubblicato o a una singola pubblicazione, specificare rispettivamente @publisher, @publisher_db o @publication. Tenere presente il valore di Metric_id per i valore soglia da modificare. Per altre informazioni, vedere Set Thresholds and Warnings in Replication Monitor.

  2. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorchangepublicationthreshold. Specificare i parametri seguenti, in base alle esigenze:

    • Valore Metric_id ottenuto nel passaggio 1 per @metric_id.

    • Nuovo valore per la metrica della soglia di monitoraggio per @value.

    • Valore 1 per @shouldalert per la registrazione di un avviso quando questa soglia viene raggiunta o un valore pari a 0 se non è necessario un avviso.

    • Valore 1 per @mode per abilitare la metrica della soglia di monitoraggio o un valore pari a 2 per disabilitarlo.

Oggetti RMO (Replication Management Objects)

Per monitorare una sottoscrizione di una pubblicazione di tipo merge nel Sottoscrittore

  1. Creare una connessione al Sottoscrittore tramite la classe ServerConnection .

  2. Creare un'istanza della classe MergeSubscriberMonitor e impostare le proprietà Publisher, Publication, PublisherDBe SubscriberDB per la sottoscrizione, quindi impostare la proprietà ConnectionContext sull'oggetto ServerConnection creato nel passaggio 1.

  3. Chiamare uno dei metodi indicati di seguito per ottenere informazioni sulle sessioni dell'agente di merge per la sottoscrizione.

    • GetSessionsSummary : restituisce una matrice di oggetti MergeSessionSummary con informazioni sulle ultime cinque sessioni dell'agente di merge al massimo. Tenere presente il valore della proprietà SessionId per le sessioni desiderate.

    • GetSessionsSummary : restituisce una matrice di oggetti MergeSessionSummary con informazioni sulle sessioni dell'agente di merge che hanno avuto luogo durante il numero passato di ore specificato come parametro hours (ultime cinque sessioni al massimo). Tenere presente il valore della proprietà SessionId per le sessioni desiderate.

    • GetLastSessionSummary : restituisce un oggetto MergeSessionSummary con informazioni sull'ultima sessione dell'agente di merge. Tenere presente il valore della proprietà SessionId per questa sessione.

    • GetSessionsSummaryDataSet : restituisce un oggetto DataSet con informazioni sulle ultime cinque sessioni dell'agente di merge al massimo, una in ciascuna riga. Tenere presente il valore della colonna Session_id per le sessioni desiderate.

    • GetLastSessionSummaryDataRow : restituisce un oggetto DataRow con informazioni sull'ultima sessione dell'agente di merge. Tenere presente il valore della colonna Session_id per questa sessione.

  4. (Facoltativo) Chiamare il metodo RefreshSessionSummary per aggiornare i dati per l'oggetto MergeSessionSummary passato come mss, o chiamare il metodo RefreshSessionSummary per aggiornare i dati nell'oggetto DataRow passato come drRefresh.

  5. Utilizzando l'ID sessione ottenuto nel passaggio 3, chiamare uno dei metodi indicati di seguito per ottenere informazioni sui dettagli di una determinata sessione.

Per monitorare le proprietà di replica per tutte le pubblicazioni in un server di distribuzione

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

  2. Creare un'istanza della classe ReplicationMonitor.

  3. Impostare la proprietà ConnectionContext sull'oggetto ServerConnection creato nel passaggio 1.

  4. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto.

  5. Eseguire uno o più metodi riportati di seguito per ottenere le informazioni di replica per tutti i server di pubblicazione che utilizzano il server di distribuzione.

    • EnumDistributionAgents : restituisce un oggetto DataSet che contiene informazioni su tutti gli agenti di distribuzione nel server di distribuzione.

    • EnumErrorRecords : restituisce un oggetto DataSet che contiene informazioni sugli errori archiviati nel server di distribuzione.

    • EnumLogReaderAgents : restituisce un oggetto DataSet che contiene informazioni su tutti gli agenti di lettura log nel server di distribuzione.

    • EnumMergeAgents : restituisce un oggetto DataSet che contiene informazioni su tutti gli agenti di merge nel server di distribuzione.

    • EnumMiscellaneousAgents : restituisce un oggetto DataSet che contiene informazioni su tutti gli altri agenti di replica nel server di distribuzione.

    • EnumPublishers : restituisce un oggetto DataSet che contiene informazioni su tutti i server di pubblicazione nel server di distribuzione.

    • EnumPublishers2 : restituisce un oggetto DataSet che restituisce i server di pubblicazione che utilizzano il server di distribuzione.

    • EnumQueueReaderAgents : restituisce un oggetto DataSet che contiene informazioni su tutti gli agenti di lettura coda nel server di distribuzione.

    • EnumQueueReaderAgentSessionDetails : restituisce un oggetto DataSet che contiene dettagli sull'agente di lettura coda specificato e sulla sessione.

    • EnumQueueReaderAgentSessions : restituisce un oggetto DataSet che contiene informazioni di sessione relative all'agente di lettura coda specificato.

    • EnumSnapshotAgents : restituisce un oggetto DataSet che contiene informazioni su tutti gli agenti snapshot nel server di distribuzione.

Per monitorare le proprietà della pubblicazione per un server di pubblicazione specifico nel server di distribuzione

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

  2. Recuperare un oggetto PublisherMonitor mediante uno dei modi indicati di seguito.

  3. Eseguire uno o più metodi riportati di seguito per ottenere le informazioni di replica per tutte le pubblicazioni appartenenti al server di pubblicazione.

Per monitorare le proprietà di una pubblicazione specifica nel server di distribuzione

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

  2. Recuperare un oggetto PublicationMonitor mediante uno dei modi indicati di seguito.

  3. Eseguire uno o più metodi riportati di seguito per ottenere informazioni su questa pubblicazione.

Per monitorare i comandi transazionali in attesa di essere applicati al Sottoscrittore

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

  2. Recuperare un oggetto PublicationMonitor mediante uno dei modi indicati di seguito.

  3. Eseguire il metodo TransPendingCommandInfo che restituisce un oggetto PendingCommandInfo .

  4. Utilizzare le proprietà dell'oggetto PendingCommandInfo per determinare il numero stimato di comandi in sospeso e il tempo necessario per completare il recapito di tali comandi.

Per impostare i valore soglia degli avvisi di monitoraggio per una pubblicazione

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

  2. Recuperare un oggetto PublicationMonitor mediante uno dei modi indicati di seguito.

  3. Eseguire il metodo EnumMonitorThresholds . Tenere presenti le impostazioni dei valore soglia correnti nell'oggetto ArrayList restituito degli oggetti MonitorThreshold .

  4. Eseguire il metodo ChangeMonitorThreshold . Passare i parametri indicati di seguito.

    • metricID : un valore Int32 che rappresenta la misurazione del valore soglia di monitoraggio nella tabella riportata di seguito.

      valore Descrizione
      1 expiration: esegue il monitoraggio delle scadenze imminenti delle sottoscrizioni di pubblicazioni transazionali.
      2 latency: esegue il monitoraggio delle prestazioni delle sottoscrizioni di pubblicazioni transazionali.
      4 mergeexpiration: esegue il monitoraggio delle scadenze imminenti delle sottoscrizioni di pubblicazioni di tipo merge.
      5 mergeslowrunduration: esegue il monitoraggio della durata delle sincronizzazioni di tipo merge attraverso connessioni remote a larghezza di banda ridotta.
      6 mergefastrunduration: esegue il monitoraggio della durata delle sincronizzazioni di tipo merge attraverso connessioni LAN ad alta larghezza di banda.
      7 mergefastrunspeed - esegue il monitoraggio della frequenza delle sincronizzazioni di tipo merge su connessioni tramite rete locale (LAN) a larghezza di banda elevata.
      8 mergeslowrunspeed: esegue il monitoraggio della velocità delle sincronizzazioni di tipo merge attraverso connessioni remote a larghezza di banda ridotta.
    • enable - Boolean che indica se la misurazione è attivata per la pubblicazione.

    • thresholdValue : valore integer che imposta il valore soglia.

    • shouldAlert - Integer che indica se il valore soglia deve generare un avviso.