Misurazione della latenza e convalida delle connessioni per la replica transazionale
In questo argomento viene descritto come misurare le connessione di convalida e latenza per la replica transazionale in SQL Server 2012 tramite Monitoraggio replica, Transact-SQLo RMO (Replication Management Objects). La replica transazionale offre la funzionalità token di traccia, che rappresenta una modalità pratica di misurazione della latenza nelle topologie di replica transazionale e di convalida delle connessioni tra server di pubblicazione, database di distribuzione e Sottoscrittori. Nel log delle transazioni del database di pubblicazione viene scritto un token, ovvero una piccola quantità di dati, che viene quindi contrassegnato come se fosse una transazione di replica tipica e inviato nel sistema, in modo da consentire il calcolo di:
Il calcolo del tempo che trascorre tra l'esecuzione del commit di una transazione nel server di pubblicazione e l'inserimento del comando corrispondente nel database di distribuzione del server di distribuzione.
Il calcolo del tempo che trascorre tra l'inserimento di un comando nel database di distribuzione e l'esecuzione del commit della transazione corrispondente nel Sottoscrittore.
I risultati ottenuti da questi calcoli consentono all'utente di rispondere a una serie di domande, incluse le seguenti:
Quali Sottoscrittori hanno richiesto più tempo per ricevere una modifica dal server di pubblicazione?
Tra i Sottoscrittori destinati a ricevere il token di traccia, quali non lo hanno eventualmente ricevuto?
Contenuto dell'argomento
Prima di iniziare:
Limitazioni e restrizioni
Per misurare la latenza e convalidare le connessioni, utilizzando:
Monitoraggio replica per SQL Server
Transact-SQL
oggetti RMO (Replication Management Objects)
Prima di iniziare
Limitazioni e restrizioni
I token di traccia possono inoltre essere utili quando si mette un sistema in stato di inattività, il che richiede l'arresto di tutte le attività e la verifica dell'avvenuta ricezione di tutte le modifiche in attesa da parte di tutti i nodi. Per ulteriori informazioni, vedere Come mettere una topologia di replica in stato di inattività (programmazione Transact-SQL della replica).
Per utilizzare i token di traccia, è necessario utilizzare alcune versioni di Microsoft SQL Server:
Il database di distribuzione deve essere Microsoft SQL Server 2005 o versione successiva.
Il server di pubblicazione deve essere SQL Server 2005 o versione successiva, oppure deve 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 soli Sottoscrittori 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.
È inoltre necessario considerare altre problematiche e limitazioni, ovvero:
Per poter ricevere un token di traccia, le sottoscrizioni devono essere attive. Una sottoscrizione è attiva se è stata inizializzata.
La reinizializzazione elimina i token di traccia in sospeso per le relative sottoscrizioni.
I Sottoscrittori ricevono solo i token di traccia creati dopo la sincronizzazione iniziale.
I token di traccia non vengono inoltrati dai Sottoscrittori di ripubblicazione.
Dopo il failover a un database secondario, Monitoraggio replica non è in grado di regolare il nome dell'istanza di pubblicazione di SQL Server e continuerà a visualizzare informazioni sulla replica con il nome dell'istanza primaria originale di SQL Server. Dopo il failover, non è possibile immettere un token di traccia tramite Monitoraggio replica, nondimeno un token di traccia immesso nel nuovo server di pubblicazione tramite Transact-SQL è visibile in Monitoraggio replica.
[Top]
Utilizzo di Monitoraggio replica per SQL Server
Per informazioni sull'avvio di Monitoraggio replica, vedere Avvio di Monitoraggio replica.
Per inserire un token di traccia e visualizzarne le informazioni
Espandere un gruppo di server di pubblicazione nel riquadro sinistro, espandere un server di pubblicazione e quindi fare clic su una pubblicazione.
Fare clic sulla scheda Token di traccia.
Fare clic su Inserisci utilità di traccia.
Visualizzare il tempo trascorso per il token di traccia nelle colonne Dal server di pubblicazione al server di distribuzione, Dal server di distribuzione al Sottoscrittore e 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
Espandere un gruppo di server di pubblicazione nel riquadro sinistro, espandere un server di pubblicazione e quindi fare clic su una pubblicazione.
Fare clic sulla scheda Token di traccia.
Selezionare un'ora dall'elenco a discesa Ora di inserimento.
Visualizzare il tempo trascorso per il token di traccia nelle colonne Dal server di pubblicazione al server di distribuzione, Dal server di distribuzione al Sottoscrittore e Latenza totale. Il valore In sospeso indica che il token non ha raggiunto un determinato punto.
[!NOTA]
Le informazioni sul token di traccia vengono conservate per lo stesso periodo di tempo degli altri dati cronologici, che sono regolati dal periodo di memorizzazione della cronologia specificato per il database di distribuzione. Per informazioni sulla modifica delle proprietà del database di distribuzione, vedere Visualizzazione e modifica delle proprietà del server di pubblicazione e del database di distribuzione.
[Top]
Utilizzo di Transact-SQL
Per inviare un token di traccia a una pubblicazione transazionale
(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.
(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.
Nel database di pubblicazione del server di pubblicazione, eseguire sp_posttracertoken (Transact-SQL), specificando @publication. Tenere presente il valore del parametro di output @tracer_token_id.
Per determinare la latenza e convalidare le connessioni per una pubblicazione transazionale
Inviare un token di traccia alla pubblicazione utilizzando la procedura precedente.
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 inviati alla pubblicazione. Tenere presente il valore di tracer_id desiderato nel set di risultati.
Nel database di pubblicazione del server di pubblicazione, eseguire sp_helptracertokenhistory (Transact-SQL), specificando @publication e l'ID del token di traccia indicato nel passaggio 2 per @tracer_id. Vengono restituite le informazioni sulla latenza per il token di traccia selezionato.
Per rimuovere token di traccia
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 inviati alla pubblicazione. Tenere presente il valore di tracer_id del token di traccia da eliminare nel set di risultati.
Nel database di pubblicazione del server di pubblicazione, eseguire sp_deletetracertokenhistory (Transact-SQL), specificando @publication e l'ID del token di traccia da eliminare indicato nel passaggio 2 per @tracer_id.
Esempio (Transact-SQL)
In questo esempio viene inserito un record di token di traccia e viene utilizzato l'ID restituito del token di traccia inviato 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
[Top]
Utilizzo di RMO (Replication Management Objects)
Per inviare un token di traccia a una pubblicazione transazionale
Creare una connessione al server di pubblicazione tramite la classe ServerConnection.
Creare un'istanza della classe TransPublication.
Impostare le proprietà Name e DatabaseName per la pubblicazione, quindi impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.
Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà di pubblicazione sono state definite in modo non corretto nel passaggio 3 oppure la pubblicazione non esiste.
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
Creare una connessione al server di distribuzione tramite la classe ServerConnection.
Creare un'istanza della classe PublicationMonitor.
Impostare le proprietà Name, DistributionDBName, PublisherName e PublicationDBName, quindi impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.
Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà di monitoraggio della pubblicazione sono state definite in modo non corretto nel passaggio 3 oppure la pubblicazione non esiste.
Chiamare il metodo EnumTracerTokens. Eseguire il cast dell'oggetto ArrayList restituito in una matrice di oggetti TracerToken.
Chiamare il metodo EnumTracerTokenHistory. Passare un valore di TracerTokenID per un token di traccia indicato nel passaggio 5. Le informazioni sulla latenza per il token di traccia selezionato vengono restituite come oggetto DataSet. Se vengono restituite tutte le informazioni sul token di traccia, la connessione tra server di pubblicazione e server di distribuzione e la connessione tra server di distribuzione e Sottoscrittore esistono e la topologia di replica funziona correttamente.
Per rimuovere token di traccia
Creare una connessione al server di distribuzione tramite la classe ServerConnection.
Creare un'istanza della classe PublicationMonitor.
Impostare le proprietà Name, DistributionDBName, PublisherName e PublicationDBName, quindi impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.
Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà di monitoraggio della pubblicazione sono state definite in modo non corretto nel passaggio 3 oppure la pubblicazione non esiste.
Chiamare il metodo EnumTracerTokens. Eseguire il cast dell'oggetto ArrayList restituito in una matrice di oggetti TracerToken.
Chiamare il metodo CleanUpTracerTokenHistory. Passare uno dei valori seguenti:
La proprietà TracerTokenID per un token di traccia indicato al passaggio 5. Vengono eliminate le informazioni per un token selezionato.
Un oggetto DateTime. Vengono eliminate le informazioni per tutti i token con data e ora precedenti a quelle specificate.
[Top]