Condividi tramite


Misurare la latenza e convalidare le connessioni per la replica transazionale

Questo argomento descrive come misurare la latenza e convalidare le connessioni per la replica transazionale in SQL Server 2014 tramite Monitoraggio replica, Transact-SQL o RMO (Replication Management Objects). La replica transazionale offre la funzionalità token di traccia, che consente di misurare la latenza nelle topologie di replica transazionale e di convalidare le connessioni tra server di pubblicazione, server di distribuzione e Sottoscrittori. Un token (una piccola quantità di dati) viene scritto nel log delle transazioni del database di pubblicazione, contrassegnato come se fosse una tipica transazione replicata e inviato tramite il sistema, consentendo un calcolo di:

  • Tempo trascorso tra il commit di una transazione nel server di pubblicazione e il comando corrispondente inserito nel database di distribuzione nel server di distribuzione.

  • Tempo trascorso tra l'inserimento di un comando nel database di distribuzione e il commit della transazione corrispondente in un Sottoscrittore.

Da questi calcoli è possibile rispondere a una serie di domande, tra cui:

  • Quali Sottoscrittori richiedono più tempo per ricevere una modifica dal server di pubblicazione?

  • Tra i sottoscrittori che dovrebbero ricevere il token di traccia, se ce ne sono, quali non lo hanno ricevuto?

Contenuto dell'articolo

Prima di iniziare

Limitazioni e restrizioni

I token di traccia possono essere utili anche quando si interrompe un sistema, che comporta l'arresto di tutte le attività e la verifica che tutti i nodi abbiano ricevuto tutte le modifiche in sospeso. Per altre informazioni, vedere Come mettere una topologia di replica in stato di inattività (programmazione Transact-SQL della replica).

Per usare i token di traccia, è necessario usare determinate versioni di Microsoft SQL Server:

  • Il server di distribuzione deve essere Microsoft SQL Server 2005 o versione successiva.

  • Il server di pubblicazione deve essere SQL Server 2005 o versione successiva o essere un server di pubblicazione Oracle.

  • Per le sottoscrizioni push, le statistiche dei token di traccia vengono raccolte dal server di pubblicazione, dal server di distribuzione e dai Sottoscrittori se il Sottoscrittore è Microsoft SQL Server 7.0 o versione successiva.

  • Per le sottoscrizioni pull, le statistiche dei token di traccia vengono raccolte dai Sottoscrittori solo se il Sottoscrittore è SQL Server 2005 o versione successiva. Se il Sottoscrittore è SQL Server 7.0 o Microsoft SQL Server 2000, le statistiche vengono raccolte solo dal server di pubblicazione e dal server di distribuzione.

Esistono anche diversi altri problemi e restrizioni da tenere presenti:

  • Le sottoscrizioni devono essere attive per ricevere un token di traccia. Una sottoscrizione è attiva se è stata inizializzata.

  • La reinizializzazione rimuove tutti i token di traccia in sospeso per le sottoscrizioni pertinenti.

  • I sottoscrittori ricevono solo token di traccia creati dopo la sincronizzazione iniziale.

  • I token di traccia non vengono inoltrati dai subscriber che ripubblicano.

  • Dopo il failover su un secondario, il Monitor di replica non è in grado di modificare il nome dell'istanza di pubblicazione di SQL Server e continuerà a visualizzare le informazioni di replica con il nome dell'istanza primaria originale di SQL Server. Dopo il failover non è possibile immettere un token di traccia tramite Monitoraggio replica, ma un token di traccia immesso nel nuovo server di pubblicazione tramite Transact-SQL è visibile in Monitoraggio replica.

Utilizzo del Monitor di Replicazione di SQL Server

Per informazioni sull'avvio di Monitoraggio replica, vedere Avviare Monitoraggio replica.

Per inserire un token di traccia e visualizzare le informazioni sul token

  1. 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 Token di traccia .

  3. Fare clic su Inserisci traccia.

  4. Visualizza il tempo trascorso del token di traccia nelle colonne seguenti: dal server di pubblicazione al server di distribuzione, dal server di distribuzione al sottoscrittore, latenza totale. Il valore In sospeso indica che il token non ha raggiunto un determinato punto.

Per visualizzare informazioni su un token di traccia inserito in precedenza

  1. 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 Token di traccia .

  3. Selezionare un'ora dall'elenco a discesa Ora inserita .

  4. Visualizza il tempo trascorso del token di traccia nelle colonne seguenti: dal server di pubblicazione al server di distribuzione, dal server di distribuzione al sottoscrittore, latenza totale. Il valore In sospeso indica che il token non ha raggiunto un determinato punto.

    Annotazioni

    Le informazioni sul token di traccia vengono conservate per lo stesso periodo di tempo degli altri dati cronologici, regolati dal periodo di conservazione della cronologia del database di distribuzione. Per informazioni sulla modifica delle proprietà del database di distribuzione, vedere Visualizzare e modificare le proprietà del server di distribuzione e del server di pubblicazione.

Uso di Transact-SQL

Per pubblicare un token di traccia in una pubblicazione transazionale

  1. (Facoltativo) Nel database di pubblicazione del server di pubblicazione eseguire sp_helppublication (Transact-SQL). Verificare che la pubblicazione esista e che lo stato sia attivo.

  2. (Facoltativo) Nel database di pubblicazione del server di pubblicazione eseguire sp_helpsubscription (Transact-SQL). Verificare che la sottoscrizione esista e che lo stato sia attivo.

  3. Nel database di pubblicazione del server di pubblicazione eseguire sp_posttracertoken (Transact-SQL), specificando @publication. Si noti il valore del parametro di output @tracer_token_id.

Per determinare la latenza e convalidare le connessioni per una pubblicazione transazionale

  1. Inserire un token di traccia nella pubblicazione utilizzando la procedura precedente.

  2. Nel database di pubblicazione del server di pubblicazione eseguire sp_helptracertokens (Transact-SQL), specificando @publication. Viene restituito un elenco di tutti i token di traccia pubblicati nella pubblicazione. Prendere nota del tracer_id desiderato nel set di risultati.

  3. Nel database di pubblicazione, eseguire sp_helptracertokenhistory (Transact-SQL), specificando @publication e l'ID del token di traccia del passaggio 2 per @tracer_id. Vengono restituite informazioni sulla latenza per il token di traccia selezionato.

Per rimuovere i token di traccia

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_helptracertokens (Transact-SQL), specificando @publication. Viene restituito un elenco di tutti i token di traccia pubblicati nella pubblicazione. Si noti il tracer_id per il token di traccia da eliminare nel set di risultati.

  2. Nel database di pubblicazione del Publisher, eseguire sp_deletetracertokenhistory (Transact-SQL), specificando @publication e l'ID del tracer da eliminare dal passaggio 2 per @tracer_id.

Esempio (Transact-SQL)

In questo esempio viene inserito un record di token di traccia e viene usato l'ID restituito del token di traccia pubblicato per visualizzare le informazioni sulla latenza.

DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

USE [AdventureWorks2012]

-- Insert a new tracer token in the publication database.
EXEC sys.sp_posttracertoken 
  @publication = @publication,
  @tracer_token_id = @tokenID OUTPUT;
SELECT 'The ID of the new tracer token is ''' + 
    CONVERT(varchar,@tokenID) + '''.'
GO

-- Wait 10 seconds for the token to make it to the Subscriber.
WAITFOR DELAY '00:00:10';
GO

-- Get latency information for the last inserted token.
DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

CREATE TABLE #tokens (tracer_id int, publisher_commit datetime)

-- Return tracer token information to a temp table.
INSERT #tokens (tracer_id, publisher_commit)
EXEC sys.sp_helptracertokens @publication = @publication;
SET @tokenID = (SELECT TOP 1 tracer_id FROM #tokens
ORDER BY publisher_commit DESC)
DROP TABLE #tokens

-- Get history for the tracer token.
EXEC sys.sp_helptracertokenhistory 
  @publication = @publication, 
  @tracer_id = @tokenID;
GO

Utilizzo di RMO (Replication Management Objects)

Per pubblicare un token di traccia in una pubblicazione transazionale

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

  2. Creare un'istanza della classe TransPublication.

  3. Impostare la Name e DatabaseName proprietà per la pubblicazione e impostare la proprietà ConnectionContext alla connessione creata nel passaggio 1.

  4. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà della pubblicazione nel passaggio 3 sono state definite in modo non corretto o la pubblicazione non esiste.

  5. Chiamare il metodo PostTracerToken . Questo metodo inserisce un token di traccia nel log delle transazioni della pubblicazione.

Per determinare la latenza e convalidare le connessioni per una pubblicazione transazionale

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

  2. Creare un'istanza della classe PublicationMonitor.

  3. Impostare le proprietà Name, DistributionDBName, PublisherName e PublicationDBName, e impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.

  4. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà di monitoraggio della pubblicazione nel passaggio 3 sono state definite in modo non corretto o la pubblicazione non esiste.

  5. Chiamare il metodo EnumTracerTokens . Effettuare il cast dell'oggetto restituito ArrayList in un array di oggetti TracerToken.

  6. Chiamare il metodo EnumTracerTokenHistory . Passare un valore di TracerTokenId per un token di traccia dal passaggio 5. In questo modo vengono restituite informazioni sulla latenza per il token di traccia selezionato come DataSet oggetto . Se vengono restituite tutte le informazioni sul token di traccia, la connessione tra il server di pubblicazione e il server di distribuzione e la connessione tra il server di distribuzione e il Sottoscrittore esistono e la topologia di replica funziona.

Per rimuovere i token di traccia

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

  2. Creare un'istanza della classe PublicationMonitor.

  3. Impostare le proprietà Name, DistributionDBName, PublisherName e PublicationDBName, e impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.

  4. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà di monitoraggio della pubblicazione nel passaggio 3 sono state definite in modo non corretto o la pubblicazione non esiste.

  5. Chiamare il metodo EnumTracerTokens . Eseguire il cast dell'oggetto restituito ArrayList a una matrice di TracerToken oggetti.

  6. Chiamare il metodo CleanUpTracerTokenHistory . Passare uno dei valori seguenti:

    • Il TracerTokenId per un marcatore di traccia del passaggio 5. In questo modo vengono eliminate le informazioni per un token selezionato.

    • Oggetto DateTime. In questo modo vengono eliminate le informazioni per tutti i token precedenti alla data e all'ora specificate.