Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article présente l’utilisation du -SkipErrors
paramètre dans Agent de distribution.
Version du produit d’origine : SQL Server
Numéro de base de connaissances d’origine : 327817
Résumé
Microsoft SQL Server inclut le nouveau paramètre -SkipErrors
dans le Agent de distribution qui permet au Agent de distribution d’ignorer l’erreur indiquée dans la réplication transactionnelle et de poursuivre le processus de distribution.
L’extrait suivant provient de la rubrique Gestion des erreurs de l’agent dans la documentation en ligne de SQL Server :
Sous traitement de réplication classique, vous ne devez pas rencontrer d’erreurs qui doivent être ignorées. La possibilité d’ignorer les erreurs lors de la réplication transactionnelle est disponible pour les circonstances uniques où vous attendez des erreurs et ne souhaitez pas qu’elles affectent la réplication (par exemple, lors du basculement vers un serveur de publication secondaire lors de la copie des journaux de transaction).
Microsoft vous recommande d’utiliser ce paramètre avec prudence et uniquement lorsque vous avez une bonne compréhension des éléments suivants :
- Ce que l’erreur indique.
- Pourquoi l’erreur se produit.
- Pourquoi il est préférable d’ignorer l’erreur au lieu de la résoudre.
Si vous ne connaissez pas les réponses à ces éléments, l’utilisation inappropriée du paramètre peut entraîner une incohérence des -SkipErrors
données entre le serveur de publication et l’Abonné. Cet article décrit certains problèmes qui peuvent se produire lorsque vous utilisez incorrectement le -SkipErrors
paramètre.
Plus d’informations
Dans la réplication transactionnelle, les modifications de données sur le serveur de publication sont propagées à l’Abonné dans l’unité de transaction.
Dans une transaction, il peut y avoir plusieurs commandes. Par défaut, si une commande échoue, toute la transaction de réplication est rétablie sur l’Abonné. Si vous ajoutez le -SkipErrors
paramètre pour autoriser l’Agent de distribution à ignorer certaines erreurs, la commande individuelle qui provoque cette erreur n’est pas appliquée à l’Abonné, mais toutes les autres commandes des mêmes transactions sont appliquées. Dans ce cas, la transaction de réplication n’est appliquée qu’en partie à l’Abonné, ce qui peut donc entraîner l’incohérence des données entre le serveur de publication et l’Abonné.
Par exemple :
Vous avez une transaction en attente d’être répliquée dans la table Abonné nommée T1. Cette transaction inclut 100 instructions insert. Lorsqu’il s’applique à l’Abonné, les 90 premiers insertions traitent correctement ; Toutefois, l’instruction insert 9ty-first échoue et l’erreur de violation de clé primaire 2627 se produit.
Lorsque vous n’utilisez pas le -SkipErrors
paramètre (comportement par défaut) :
Par défaut, toute la transaction est annulée et aucun des 100 nouveaux enregistrements n’est inséré dans la table d’abonnement. Dans ce cas, vous devez corriger l’erreur de réplication afin que la transaction puisse être réappliquée à l’Abonné.
Lorsque vous utilisez le -SkipErrors
paramètre :
Le Agent de distribution enregistre l’erreur dans l’historique Agent de distribution, ignore cette erreur, puis poursuit le processus de distribution. Par conséquent, à l’exception du neuf-dix-premier enregistrement qui a provoqué l’erreur, les 99 autres enregistrements sont insérés dans la table d’abonnement. Cette transaction n’est pas réappliquée par le Agent de distribution, même après avoir corrigé manuellement l’erreur sur l’Abonné. Par conséquent, dans ce cas, l’Abonné manque le neuf premier enregistrement et un problème d’incohérence des données se produit.
Vous devez également savoir que, dans SQL Server 2000, le Agent de distribution est généralement partagé par plusieurs publications (par défaut, il existe une Agent de distribution par base de données de publication et une paire de base de données d’abonnement), donc si vous ajoutez le -SkipErrors
paramètre au Agent de distribution travail, il affecte toutes les publications que cet agent est en cours de maintenance. Dans les versions sql 2005 et SQL 2008, la réplication transactionnelle utilise des agents indépendants par défaut pour les publications créées dans l’Assistant Nouvelle publication. Pour les publications créées à l’aide sp_addpublication
d’une procédure stockée, le comportement par défaut consiste à utiliser un agent partagé.
Pour utiliser le -SkipErrors
paramètre d’une publication spécifique, utilisez un agent indépendant, qui ne sert qu’un seul abonnement. Pour utiliser un agent indépendant, suivez les étapes de votre version :
SQL Server 2000
Dans SQL Server Entreprise Manager, cliquez avec le bouton droit sur la composition, cliquez
Properties
, puis, sous l’onglet Options d’abonnement, cliquez sur l’utilisation d’un Agent de distribution indépendant d’une autre publication à partir de cette option de base de données.Note
Vous ne pouvez pas activer cette option après avoir ajouté des abonnements à cette publication.
Ajoutez le
-SkipErrors
paramètre au Agent de distribution d’un abonnement spécifique.
SQL Server 2005 et SQL Server 2008
Dans SQL Server Management Studio, accédez à La réplication, puis dans la section Publications locales, cliquez avec le bouton droit sur la composition, cliquez sur Propriétés, puis, dans la page Options d’abonnement, remplacez la valeur des Agent de distribution indépendantes par False.
Note
Vous ne pouvez pas activer cette option après avoir ajouté des abonnements à cette publication.
Ajoutez le
-SkipErrors
paramètre au Agent de distribution d’un abonnement spécifique.
Pour plus d’informations, consultez les rubriques suivantes :