Condividi tramite


Monitoraggio della replica a livello di programmazione

Si applica a: SQL Server e Istanza gestita di SQL di Azure

Monitoraggio replica è uno strumento grafico che consente di monitorare una topologia di replica. È possibile accedere agli stessi dati di monitoraggio a livello di programmazione utilizzando le stored procedure di replica Transact-SQL o gli oggetti RMO (Replication Management Objects). 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 solo 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 solo server di pubblicazione, a una sola pubblicazione o a un solo database pubblicato, specificare rispettivamente @publisher, @publicationo @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 solo server di pubblicazione, a una sola pubblicazione o a un solo database pubblicato, specificare rispettivamente @publisher, @publicationo @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 solo server di pubblicazione, a un solo Sottoscrittore, a una sola pubblicazione o a un solo database pubblicato, specificare rispettivamente @publisher, @subscriber, @publicationo @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 a modifiche che appartengono a una sola pubblicazione o a un solo un 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 a modifiche che appartengono a una sola pubblicazione o a un solo un 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 il valore Session_id indicato al 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, @publicatione 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 il valore Session_id indicato al 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 ai valore soglia di monitoraggio delle pubblicazioni appartenenti a un solo server di pubblicazione, a un solo database pubblicato o a una sola pubblicazione, specificare rispettivamente @publisher, @publisher_dbo @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:

    • Il valore Metric_id ottenuto nel passaggio 1 per @metric_id.

    • Un nuovo valore per la misurazione del valore soglia di monitoraggio per @value.

    • Un valore pari a 1 per @shouldalert se è necessaria la registrazione di un avviso al raggiungimento del valore soglia specificato o un valore pari a 0 se la registrazione dell'avviso non è necessaria.

    • Un valore pari a 1 per @mode per abilitare la metrica di soglia di monitoraggio o un valore pari a 2 per disabilitarla.

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