Procédure : mesurer la latence et valider les connexions pour la réplication transactionnelle (programmation Transact-SQL de la réplication)

Pour la réplication transactionnelle, il est important de pouvoir vérifier que les serveurs sont connectés et de mesurer la latence. La latence correspond à la durée qui s'écoule pour que les modifications effectuées sur le serveur de publication soient répercutées sur les Abonnés. Pour plus d'informations, consultez Surveillance (réplication). Ces informations peuvent être obtenues par programmation à l'aide de procédures stockées de réplication.

[!REMARQUE]

Les informations de jeton de suivi sont conservées pour la même durée que toute autre donnée d'historique, elles-mêmes étant régies par la période de rétention des historiques définie dans la base de données de distribution. Pour modifier la période de rétention, changez la valeur de la propriété history_retention à l'aide de sp_changedistributiondb (Transact-SQL).

Pour publier un jeton de suivi sur une publication transactionnelle

  1. (Facultatif) Sur le serveur de publication de la base de données de publication, exécutez sp_helppublication (Transact-SQL). Vérifiez que la publication existe et que l'état est actif.

  2. (Facultatif) Sur le serveur de publication de la base de données de publication, exécutez sp_helpsubscription (Transact-SQL). Vérifiez que l'abonnement existe et que l'état est actif.

  3. Dans la base de données de publication du serveur de publication, exécutez sp_posttracertoken (Transact-SQL), en spécifiant @publication. Notez la valeur du paramètre de sortie @tracer_token_id.

Pour déterminer la latence et valider les connexions d'une publication transactionnelle

  1. Publiez un jeton de suivi sur la publication à l'aide de la procédure précédente.

  2. Dans la base de données de publication du serveur de publication, exécutez sp_helptracertokens (Transact-SQL), en spécifiant @publication. La liste de tous les jetons de suivi publiés sur la publication est ainsi retournée. Notez le tracer_id désiré dans le jeu de résultats.

  3. Sur la base de données de publication du serveur de publication, exécutez sp_helptracertokenhistory (Transact-SQL), en spécifiant @publication et l'ID de jeton de suivi de l'étape 2 pour @tracer_id. Les informations de latence pour le jeton de suivi sélectionné sont ainsi retournées.

Pour supprimer les jetons de suivi

  1. Dans la base de données de publication du serveur de publication, exécutez sp_helptracertokens (Transact-SQL), en spécifiant @publication. La liste de tous les jetons de suivi publiés sur la publication est ainsi retournée. Notez tracer_id pour le jeton de suivi à supprimer dans le jeu de résultats.

  2. Sur la base de données de publication du serveur de publication, exécutez sp_deletetracertokenhistory (Transact-SQL), en spécifiant @publication et l'ID de jeton de suivi à supprimer de l'étape 2 pour @tracer_id.

Exemple

Cet exemple publie un enregistrement de jeton de suivi et utilise l'ID retourné du jeton de suivi publié pour consulter les informations de latence.

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

USE [AdventureWorks]

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