Condividi tramite


Monitorare la replica in modo programmatico

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 Transact-SQL le stored procedure di replica o gli oggetti RMO (Replication Management Objects). Questi oggetti consentono di programmare le attività seguenti:

  • Monitorare lo stato degli editori, delle pubblicazioni e delle sottoscrizioni.

  • Monitorare le sessioni dell'agente di merge in uno o più Sottoscrittori.

  • Monitorare i comandi transazionali in attesa di essere applicati a uno o più Sottoscrittori.

  • Definire le metriche di soglia che determinano quando una pubblicazione richiede l'intervento.

  • Monitorare lo stato dei token di traccia.

Contenuto dell'argomento:

Transact-SQL

Oggetti di Gestione della Replicazione (RMO)

Transact-SQL

Per monitorare editori, pubblicazioni e sottoscrizioni dal distributore

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

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

  3. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorhelpsubscription. Vengono restituite informazioni di monitoraggio per tutte le sottoscrizioni che usano questo 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 nel Sottoscrittore

  1. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorsubscriptionpendingcmds. Vengono restituite informazioni di monitoraggio per tutti i comandi in sospeso per tutte le sottoscrizioni che usano questo server di distribuzione. Per limitare il set di risultati ai comandi in sospeso per le sottoscrizioni appartenenti a un singolo server di pubblicazione, sottoscrittore, pubblicazione 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 che mostra le informazioni sulle modifiche in attesa di essere replicate nei Sottoscrittori. Per limitare il set di risultati alle modifiche che appartengono a una singola pubblicazione o articolo, specificare rispettivamente @publication o @article.

  2. eseguire sp_showpendingchanges su un sottoscrittore sul database di sottoscrizione. Viene restituito un set di risultati che mostra le informazioni sulle modifiche in attesa di essere replicate al Publisher. Per limitare il set di risultati alle modifiche che appartengono a una singola pubblicazione o articolo, specificare rispettivamente @publication o @article.

Per monitorare le sessioni dell'agente di merge

  1. Nel database di distribuzione del server di distribuzione eseguire sp_replmonitorhelpmergesession. Vengono restituite informazioni di monitoraggio, incluse le Session_id, in tutte le sessioni dell'agente di merge per tutte le sottoscrizioni che usano questo server di distribuzione. È anche possibile ottenere 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 del passaggio 1 per @session_id. Vengono visualizzate informazioni dettagliate sul monitoraggio della sessione.

  3. Ripetere il passaggio 2 per ogni sessione di interesse.

Per monitorare le sessioni dell'agente di unione per le sottoscrizioni pull da parte del Sottoscrittore

  1. Nel database di sottoscrizione per il sottoscrittore, eseguire il comando sp_replmonitorhelpmergesession. Per una determinata sottoscrizione, specificare @publisher, @publication e il nome del database di pubblicazione per @publisher_db. Vengono restituite informazioni di monitoraggio per le ultime cinque sessioni dell'agente di merge per questa sottoscrizione. Si noti il valore di Session_id per le sessioni di interesse nel set di risultati.

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

  3. Ripetere il passaggio 2 per ogni sessione di interesse.

Per visualizzare e modificare le metriche di soglia di monitoraggio per una pubblicazione

  1. Al server di distribuzione sul database di distribuzione, eseguire sp_replmonitorhelppublicationthresholds. In questo modo vengono restituite le soglie di monitoraggio impostate 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 database pubblicato o a una singola pubblicazione, specificare rispettivamente @publisher, @publisher_db o @publication. Si noti il valore di Metric_id per le soglie che devono essere modificate. Per ulteriori informazioni, vedere Imposta soglie e avvisi nel Replication Monitor.

  2. Presso il distributore, nel database di distribuzione, eseguire sp_replmonitorchangepublicationthreshold. Specificare quanto segue 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 soglia di monitoraggio o il valore 2 per disabilitarlo.

Replication Management Objects (RMO)

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

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

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

  3. Utilizza uno dei seguenti metodi per ottenere informazioni sulle sessioni dell'agente di Merge per questa sottoscrizione.

    • GetSessionsSummary : restituisce una matrice di MergeSessionSummary oggetti con informazioni sulle ultime cinque sessioni dell'agente di merge. Si noti il valore SessionId per ogni sessione di interesse.

    • GetSessionsSummary : restituisce un array di MergeSessionSummary oggetti contenenti informazioni sulle sessioni dell'Agente di combinazione che si sono verificate nel numero di ore indicato dal parametro ore (fino alle ultime cinque sessioni). Si noti il SessionId valore per qualsiasi sessione di interesse.

    • GetLastSessionSummary : restituisce un MergeSessionSummary oggetto con informazioni sull'ultima sessione dell'agente di merge. Prendere nota del valore di SessionId per questa sessione.

    • GetSessionsSummaryDataSet : restituisce un DataSet oggetto con informazioni sulle ultime cinque sessioni dell'agente di merge, una in ogni riga. Si noti il valore della colonna Session_id per qualsiasi sessione di interesse.

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

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

  5. Usando l'ID sessione ottenuto nel passaggio 3, chiamare uno dei metodi seguenti per restituire 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 ConnectionContext proprietà sull'oggetto ServerConnection creato nel passaggio 1.

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

  5. Eseguire uno o più dei metodi seguenti per restituire le informazioni di replica per tutti i server di pubblicazione che utilizzano questo server di distribuzione.

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

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

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

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

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

    • EnumPublishers : restituisce un DataSet oggetto che contiene informazioni su tutti gli editor presso questo distributore.

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

    • EnumQueueReaderAgents - restituisce un oggetto DataSet che contiene informazioni su tutti gli Agenti di Lettura Coda al Distributore.

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

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

    • EnumSnapshotAgents : restituisce un DataSet oggetto 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. Ottieni un oggetto PublisherMonitor in uno di questi modi.

  3. Eseguire uno o più dei seguenti metodi per ottenere informazioni sulla replica per tutte le pubblicazioni appartenenti a questo Publisher.

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. Ottieni un PublicationMonitor oggetto in uno di questi modi.

  3. Eseguire uno o più dei metodi seguenti per restituire informazioni sulla pubblicazione.

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

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

  2. Ottieni un oggetto PublicationMonitor in uno di questi modi.

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

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

Per impostare le soglie di avviso di monitoraggio per una pubblicazione

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

  2. Ottieni un PublicationMonitor oggetto in uno di questi modi.

  3. Esegui il metodo EnumMonitorThresholds. Si notino le impostazioni di soglia correnti nei ArrayList restituiti degli oggetti MonitorThreshold.

  4. Eseguire il metodo ChangeMonitorThreshold. Passare i parametri seguenti:

    • metricID : valore Int32 che rappresenta la metrica della soglia di monitoraggio della tabella seguente:

      Valore Descrizione
      1 expiration : monitora la scadenza imminente delle sottoscrizioni alle pubblicazioni transazionali.
      2 latency : monitora le prestazioni delle sottoscrizioni alle pubblicazioni transazionali.
      4 mergeexpiration : monitora la scadenza imminente delle sottoscrizioni alle pubblicazioni di tipo merge.
      5 mergeslowrunduration : monitora la durata delle sincronizzazioni di tipo merge su connessioni a larghezza di banda ridotta (dialup).
      6 mergefastrunduration - monitora la durata delle sincronizzazioni di tipo merge su connessioni LAN (High Bandwidth).
      7 mergefastrunspeed : monitora la frequenza di sincronizzazione delle sincronizzazioni di tipo merge su connessioni LAN (High Bandwidth).
      8 mergeslowrunspeed : monitora la frequenza di sincronizzazione delle sincronizzazioni di tipo merge su connessioni a larghezza di banda ridotta (dialup).
    • abilitare - Boolean valore che indica se la metrica è abilitata per la pubblicazione.

    • thresholdValue : valore intero che imposta la soglia.

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