Cómo medir la latencia y validar conexiones para la replicación transaccional (programación de la replicación con Transact-SQL)

Para la replicación transaccional, es importante poder comprobar que los servidores están conectados y medir la latencia. La latencia es el tiempo que tardan en propagarse en los suscriptores los cambios realizados en el publicador. Para obtener más información, vea Supervisar (replicación). Esta información se puede obtener mediante programación con procedimientos almacenados de replicación.

Nota

La información del testigo de seguimiento se guarda durante el mismo período que otros datos del historial, que depende del período de retención de historial de la base de datos de distribución. Para cambiar el período de retención, cambie el valor de la propiedad history_retention utilizando sp_changedistributiondb (Transact-SQL).

Para exponer un testigo de seguimiento en una publicación transaccional

  1. (Opcional) En la base de datos de publicación del publicador, ejecute sp_helppublication (Transact-SQL). Compruebe que la publicación existe y que el estado está activo.

  2. (Opcional) En la base de datos de publicación del publicador, ejecute sp_helpsubscription (Transact-SQL). Compruebe que la suscripción existe y que el estado está activo.

  3. En la base de datos de publicación del publicador, ejecute sp_posttracertoken (Transact-SQL), especificando @publication. Anote el valor del parámetro de salida @tracer_token_id.

Para medir la latencia y validar las conexiones de una replicación transaccional

  1. Exponga un testigo de seguimiento en la publicación utilizando el procedimiento anterior.

  2. En la base de datos de publicación del publicador, ejecute sp_helptracertokens (Transact-SQL), especificando @publication. Esto devuelve una lista de todos los testigos de seguimiento expuestos en la publicación. Anote el tracer_id que desee del conjunto de resultados.

  3. En la base de datos de publicación del publicador, ejecute sp_helptracertokenhistory (Transact-SQL), especificando @publication y el Id. del testigo de seguimiento del paso 2 para @tracer_id. Esto devuelve información de latencia del testigo de seguimiento seleccionado.

Para quitar los testigos de seguimiento

  1. En la base de datos de publicación del publicador, ejecute sp_helptracertokens (Transact-SQL), especificando @publication. Esto devuelve una lista de todos los testigos de seguimiento expuestos en la publicación. Anote el tracer_id del testigo de seguimiento que se va a eliminar del conjunto de resultados.

  2. En la base de datos de publicación del publicador, ejecute sp_deletetracertokenhistory (Transact-SQL), especificando @publication y el Id. del testigo para eliminar del paso 2 para @tracer_id

Ejemplo

Este ejemplo expone un registro de testigo de seguimiento y utiliza el Id. devuelto del testigo de seguimiento expuesto para ver información de la latencia.

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

USE [AdventureWorks2008R2]

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