[SQL Server] Réplication : identification d’un article concerné par l’échec de réplication d’une transaction et identification de cette dernière

Ce billet présente brièvement une façon simple d’identifier un article concerné par l’échec de réplication d’une transaction. Il montre également comment identifier la transaction associée audit échec.

Intérêt de la démarche

Lors de l’audit d’une session de réplication en échec, il peut naturellement arriver que l’on veuille connaître le nom (et autres informations) des articles concernés par l’échec, ainsi que les transactions incriminées. Or, le Replication Monitor, outil usuellement utilisé pour capturer les détails relatifs aux activités réplicationnelles, ne fournit généralement que la valeur hexadécimale du numéro de séquence associé à la transaction en échec, ce qui est peu pratique.

Modus operandi d’identification

Supposons qu’au sein du Replication Monitor, dans les informations détaillées d’un abonné d’une publication (onglet Tous les abonnements), on constate un échec de réplication d’une transaction d’un article pour raisons diverses, et que l’on souhaite identifier l’article incriminé. Il suffira de procéder comme suit :

  • A partir du Replication Monitor (Tous les abonnements), récupération de la valeur hexadécimale du numéro de séquence associé à la transaction (exemple : 0x00000288000038870001), via clic-droit sur l’abonnement concerné, puis Afficher les détails.
  • Au sein d’une fenêtre de requêtes, exécution de la requête suivante :
    • Pour déterminer l’article incriminé :
USE distribution
GO
SELECT *
FROM dbo.MSarticles
WHERE article_id IN
(SELECT article_id
FROM MSrepl_commands
WHERE xact_seqno = 0x00000288000038870001)
GO
  • Pour déterminer le contenu de la transaction concernée :
USE distribution
GO
EXEC sp_browsereplcmds @xact_seqno_start='0x00000288000038870001',
@xact_seqno_end='0x00000288000038870001'
GO

Notons que la table MSrepl_commands contient la liste des transactions distribuées vers l’ (ou les) abonné(s) ou qui ne l’ont pas encore été. Les transactions présentes dans cette table sont automatiquement supprimées suivant la rétention configurée par le distributeur (voir les propriétés du serveur de distribution déjà présentées dans la section 4.1.1). Par défaut, les transactions sont retenues 2 semaines.


Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s