Valider des données répliquéesValidate Replicated Data

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Cette rubrique décrit comment valider les données sur l'abonné dans SQL Server 2017SQL Server 2017 à l'aide de SQL Server Management StudioSQL Server Management Studio, de Transact-SQLTransact-SQLou des objets RMO (Replication Management Objects).This topic describes how to validate data at the Subscriber in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO).

La réplication transactionnelle et de fusion vous permet de vérifier que les données sur l'Abonné correspondent aux données sur le serveur de publication.Transactional and merge replication allow you to validate that data at the Subscriber matches data at the Publisher. La validation peut être réalisée pour des abonnements spécifiques ou pour tous les abonnements à une publication.Validation can be performed for specific subscriptions or for all subscriptions to a publication. Spécifiez un des types de validation suivants et l'Agent de distribution ou l'Agent de fusion validera les données lors de sa prochaine exécution :Specify one of the following validation types and the Distribution Agent or Merge Agent will validate data the next time it runs:

  • Calculer uniquement le nombre de lignes.Row count only. Ceci vérifie si la table sur l'Abonné a le même nombre de lignes que la table sur le serveur de publication, mais ne vérifie pas que le contenu des lignes correspond.This validates whether the table at the Subscriber has the same number of rows as the table at the Publisher, but does not validate that the content of the rows matches. La validation du nombre de lignes fournit une approche allégée de la validation qui vous permet de savoir qu'il existe des problèmes au niveau des données.Row count validation provides a lightweight approach to validation that can make you aware of issues with your data.
  • Calculer le nombre de lignes et comparer les sommes de contrôle binaires.Row count and binary checksum. Outre le comptage des lignes sur le serveur de publication et sur l'Abonné, une somme de contrôle de toutes les données est calculée à l'aide de l'algorithme de somme de contrôle.In addition to taking a count of rows at the Publisher and Subscriber, a checksum of all the data is calculated using the checksum algorithm. Si le nombre de lignes est erroné, la somme de contrôle n'est pas effectuée.If the row count fails, the checksum is not performed.

En plus de vérifier que les données sur l'Abonné et sur le serveur de publication correspondent, la réplication de fusion donne la possibilité de vérifier que les données sont partitionnées correctement pour chaque Abonné.In addition to validating that data at the Subscriber and Publisher match, merge replication provides the ability to validate that data is partitioned correctly for each Subscriber. Pour plus d’informations, consultez Valider des informations de partition pour un Abonné de fusion.For more information, see Validate Partition Information for a Merge Subscriber.

Notes

Une instance managée Azure SQL Database peut être un serveur de publication, un serveur de distribution et un Abonné pour la réplication transactionnelle et d’instantané.Azure SQL Database managed instance can be a publisher, distributor, and subscriber for snapshot and transactional replication. Les bases de données uniques et mises en pool d’Azure SQL Database peuvent uniquement être des Abonnés de type push pour la réplication transactionnelle et d’instantané.Azure SQL database single and pooled databases can only be push subscribers for snapshot and transactional replication. Pour plus d’informations, consultez Réplication transactionnelle avec Azure SQL Database.For more information, see Transactional replication with Azure SQL Database.

Fonctionnement de la validation des donnéesHow Data Validation Works

SQL ServerSQL Server valide les données en calculant un nombre de lignes et/ou une somme de contrôle sur le serveur de publication, puis en comparant ces valeurs au nombre de lignes et/ou à la somme de contrôle calculé sur l'Abonné.validates data by calculating a row count or a checksum at the Publisher and then comparing those values to the row count or checksum calculated at the Subscriber. Une valeur est calculée pour l'ensemble de la table de publication et une autre est calculée pour l'ensemble de la table d'abonnement, mais les données des colonnes text, ntextou image ne sont pas prises en compte dans les calculs.One value is calculated for the entire publication table and one value is calculated for the entire subscription table, but data in text, ntext, or image columns is not included in the calculations.

Pendant l'exécution des calculs, des verrous partagés sont temporairement placés sur les tables pour lesquelles le nombre de lignes ou la somme de contrôle est calculé. Ces calculs sont cependant effectués rapidement et les verrous partagés sont généralement retirés au bout de quelques secondes.While the calculations are performed, shared locks are placed temporarily on tables for which row counts or checksums are being run, but the calculations are completed quickly and the shared locks removed, usually in a matter of seconds.

Lors de l'utilisation des sommes de contrôle binaires, le contrôle de redondance cyclique (CRC) 32 bits est effectué colonne par colonne, et non pas sur la ligne physique de la page de données.When binary checksums are used, 32-bit redundancy check (CRC) occurs on a column-by-column basis rather than a CRC on the physical row on the data page. Ainsi, quel que soit l'ordre physique des colonnes de la table dans la page de données, elles participent au même calcul de CRC de ligne.This allows the columns with the table to be in any order physically on the data page, but still compute to the same CRC for the row. La validation par somme de contrôle binaire peut être utilisée lorsque des filtres de lignes ou de colonnes sont appliqués à la publication.Binary checksum validation can be used when there are row or column filters on the publication.

La validation des données est en processus comptant trois parties :Validating data is a three-part process:

  1. Un abonnement unique ou tous les abonnements à une publication sont marqués pour la validation.A single subscription or all subscriptions to a publication are marked for validation. Marquez des abonnements pour validation dans les boîtes de dialogue Valider l’abonnement, Valider les abonnements et Valider tous les abonnements, disponibles dans les dossiers Publications locales et Abonnements locaux de MicrosoftMicrosoftSQL Server Management StudioSQL Server Management Studio.Mark subscriptions for validation in the Validate Subscription, Validate Subscriptions, and Validate All Subscriptions dialog boxes, which are available from the Local Publications folder and the Local Subscriptions folder in MicrosoftMicrosoftSQL Server Management StudioSQL Server Management Studio. Vous pouvez aussi marquer des abonnements à partir de l'onglet Tous les abonnements , de l'onglet Liste de suivi des abonnements et du nœud des publications dans le Moniteur de réplication.You can also mark subscriptions from the All Subscriptions tab, the Subscription Watch List tab, and the publications node in Replication Monitor. Pour plus d’informations sur le démarrage du Moniteur de réplication, consultez Démarrer le Moniteur de réplication.For information about starting Replication Monitor, see Start the Replication Monitor.

  2. Un abonnement est validé lors de sa prochaine synchronisation par l'Agent de distribution (réplication transactionnelle) ou l'Agent de fusion (réplication de fusion).A subscription is validated the next time it is synchronized by the Distribution Agent (for transactional replication) or the Merge Agent (for merge replication). L'Agent de distribution s'exécute généralement en continu, auquel cas la validation se produit immédiatement ; l'Agent de fusion s'exécute généralement à la demande, auquel cas la validation se produit après l'exécution de l'agent.The Distribution Agent typically runs continuously, in which case validation occurs immediately; the Merge Agent typically runs on demand, in which case validation occurs after you run the agent.

  3. Affichez les résultats de la validation :View the validation results:

    • dans la fenêtre détaillée du moniteur de réplication : sous l'onglet Historique du serveur de distribution vers l'Abonné pour la réplication transactionnelle et l'onglet Historique de synchronisation pour la réplication de fusion ;In the detail windows in Replication Monitor: on the Distributor to Subscriber History tab for transactional replication and the Synchronization History tab for merge replication.
    • dans la boîte de dialogue Afficher l'état de synchronisation de Management StudioManagement Studio.In the View Synchronization Status dialog box in Management StudioManagement Studio.

Considérations et restrictionsConsiderations and restrictions

Prenez en compte les problèmes suivants lors de la validation des données :Take the following issues into consideration when validating data:

  • Vous devez arrêter toutes les activités de mise à jour sur les Abonnés avant de valider les données (il n'est pas nécessaire d'arrêter les activités sur le serveur de publication pendant la validation).You must stop all update activity at Subscribers before validating data (it is not necessary to stop activity at the Publisher when validation is occurring).
  • Dans la mesure où les sommes de contrôle et les sommes de contrôle binaires peuvent nécessiter des ressources processeur importantes lors de la validation d'un jeu de données de grande taille, il est préférable de planifier la validation au moment où l'activité est la plus faible sur les serveurs utilisés dans la réplication.Because checksums and binary checksums can require large amounts of processor resources when validating a large data set, you should schedule validation to occur when there is the least activity on the servers used in replication.
  • La réplication valide seulement des tables ; elle ne vérifie pas si des articles de schéma uniquement (tels que des procédures stockées) sont identiques sur le serveur de publication et sur l'Abonné.Replication validates tables only; it does not validate whether schema only articles (such as stored procedures) are the same at the Publisher and Subscriber.
  • La somme de contrôle binaire peut être utilisée avec toutes les tables publiées.Binary checksum can be used with any published table. La somme de contrôle valide les tables avec des filtres de colonnes, ou des structures de table logique où les décalages des colonnes diffèrent (à cause d'instructions ALTER TABLE qui suppriment ou ajoutent des colonnes).Checksum cannot validate tables with column filters, or logical table structures where column offsets differ (due to ALTER TABLE statements that drop or add columns).
  • La validation de réplication utilise les fonctions checksum et binary_checksum .Replication validation uses the checksum and binary_checksum functions. Pour plus d’informations sur leur comportement, consultez CHECKSUM (Transact-SQL) et BINARY_CHECKSUM (Transact-SQL).For information about their behavior, see CHECKSUM (Transact-SQL) and BINARY_CHECKSUM (Transact-SQL).
  • Une validation utilisant la somme de contrôle binaire ou la somme de contrôle peut signaler de façon incorrecte un échec si les types de données sont différents entre l'Abonné et le serveur de publication.Validation by using binary checksum or checksum can incorrectly report a failure if data types are different at the Subscriber than they are at the Publisher. Cela peut se produire si vous effectuez l'une des opérations suivantes :This can occur if you do any one of the following:
    • Vous définissez explicitement les options de schéma pour qu'elles correspondent aux types de données des versions antérieures de SQL ServerSQL Server.Explicitly set schema options to map data types for earlier versions of SQL ServerSQL Server.
    • Vous définissez le niveau de compatibilité de la publication pour une publication de fusion sur une version antérieure de SQL ServerSQL Server, et les tables publiées contiennent un ou plusieurs types de données qui doivent être mappés pour cette version.Set the publication compatibility level for a merge publication to an earlier version of SQL ServerSQL Server, and published tables contain one or more data types that must be mapped for this version.
    • Vous initialisez manuellement un abonnement et utilisez différents types de données sur l'Abonné.Manually initialize a subscription and are using different data types at the Subscriber.
  • Les validations de somme de contrôle binaire et de somme de contrôle ne sont pas prises en charge pour les abonnements transformables dans le cadre de la réplication transactionnelle.Binary checksum and checksum validations are not supported for transformable subscriptions for transactional replication.
  • La validation n'est pas prise en charge pour les données répliquées vers des Abonnés non-SQL ServerSQL Server .Validation is not supported for data replicated to non-SQL ServerSQL Server Subscribers.
  • Les procédures du moniteur de réplication concernent uniquement les abonnements par envoi de données (push) car ce type d'abonnement ne peut pas être synchronisé dans le moniteur de réplication.The procedures for Replication Monitor are for push subscriptions only because pull subscriptions cannot be synchronized in Replication Monitor. Vous pouvez toutefois marquer un abonnement pour validation et afficher les résultats de la validation pour les abonnements par extraction de données (pull) dans le moniteur de réplication.However, you can mark a subscription for validation and view validation results for pull subscriptions in Replication Monitor.
  • Les résultats de la validation indiquent si la validation a échoué ou a raté, mais ne précisent pas les lignes défectueuses en cas d'échec.The validation results indicate whether validation succeeded or failed, but do not specify which rows failed validation if a failure occurred. Pour comparer des données sur le serveur de publication et sur l'Abonné, utilisez l' tablediff Utility.To compare data at the Publisher and Subscriber, use the tablediff Utility. Pour plus d’informations sur cet utilitaire, consultez Comparer des tables répliquées pour identifier les différences (programmation de la réplication).For more information about using this utility with replicated data, see Compare Replicated Tables for Differences (Replication Programming).

Résultats de la validation des donnéesData Validation Results

Quand la validation est terminée, l'Agent de distribution ou l'Agent de fusion consigne des messages relatifs au succès ou à l'échec (la réplication ne rapporte pas quelles lignes ont échoué).When validation is complete, the Distribution Agent or Merge Agent logs messages regarding success or failure (replication does not report which rows failed). Ces messages peuvent être affichés dans SQL Server Management StudioSQL Server Management Studio, dans le moniteur de réplication et dans les tables système de réplication.These messages can be viewed in SQL Server Management StudioSQL Server Management Studio, Replication Monitor, and replication system tables. La rubrique de procédure ci-dessus montre comment exécuter une validation et afficher les résultats.The how-to topic listed above demonstrates how to run validation and view the results.

Pour gérer les échecs de validation, considérez les points suivants :To handle validation failures, consider the following:

Articles de la réplication transactionnelleArticles in Transactional Replication

Utilisation de SQL Server Management StudioUsing SQL Server Management Studio

  1. Connectez-vous au serveur de publication dans SQL Server Management StudioSQL Server Management Studio, puis développez le nœud du serveur.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.
  2. Développez le dossier Réplication , puis développez le dossier Publications locales .Expand the Replication folder, and then expand the Local Publications folder.
  3. Cliquez avec le bouton droit sur la publication dont vous souhaitez valider les abonnements, puis cliquez sur Valider les abonnements.Right-click the publication for which you want to validate subscriptions, and then click Validate Subscriptions.
  4. Dans la boîte de dialogue Valider les abonnements , sélectionnez les abonnements à valider :In the Validate Subscriptions dialog box, select which subscriptions to validate:
    • Sélectionnez Valider tous les abonnements SQL Server.Select Validate all SQL Server subscriptions.
    • Sélectionnez Valider les abonnements suivants, puis sélectionnez un ou plusieurs abonnements.Select Validate the following subscriptions, and then select one or more subscriptions.
  5. Pour spécifier le type de validation à effectuer (nombre de lignes, ou nombre de lignes et somme de contrôle), cliquez sur Options de validation, puis spécifiez les options dans la boîte de dialogue Options de validation d'abonnement .To specify the type of validation to perform (row count, or row count and checksum) click Validation Options, and then specify options in the Subscription Validation Options dialog box.
  6. Cliquez sur OK.Click OK.

  7. Affichez les résultats de la validation dans le moniteur de réplication ou dans la boîte de dialogue Afficher l'état de synchronisation .View validation results in Replication Monitor or the View Synchronization Status dialog box. Pour chaque abonnement :For each subscription:
    1. Développez la publication, cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Afficher l'état de synchronisation.Expand the publication, right-click the subscription, and then click View Synchronization Status.
    2. Si l'agent n'est pas en cours d'exécution, cliquez sur Démarrer dans la boîte de dialogue Afficher l'état de synchronisation .If the agent is not running click Start in the View Synchronization Status dialog box. La boîte de dialogue affiche des messages d'information concernant la validation.The dialog box will display informational messages regarding validation.
      Si aucun message concernant la validation ne s'affiche, l'agent a déjà consigné un message à ce sujet dans le journal.If you do not see any messages regarding validation, the agent has already logged a subsequent message. Dans ce cas, affichez les résultats de la validation dans le moniteur de réplication.In this case, view the validation results in Replication Monitor. Pour plus d'informations, consultez les procédures du moniteur de réplication dans cette rubrique.For more information, see the Replication Monitor how to procedures in this topic.

Utilisation de Transact-SQLUsing Transact-SQL

Tous les articlesAll articles

  1. Dans la base de données de publication sur le serveur de publication, exécutez sp_publication_validation (Transact-SQL).At the Publisher on the publication database, execute sp_publication_validation (Transact-SQL). Spécifiez **@publication** et l'une des valeurs suivantes pour **@rowcount_only** :Specify **@publication** and one of the following values for **@rowcount_only**:

    • 1 - contrôle du nombre de lignes uniquement (par défaut)1 - rowcount check only (the default)
    • 2 - nombre de lignes et somme de contrôle binaire.2 - rowcount and binary checksum.

    Notes

    Lorsque vous exécutez sp_publication_validation (Transact-SQL), sp_article_validation (Transact-SQL) est exécuté pour chaque article de la publication.When you execute sp_publication_validation (Transact-SQL), sp_article_validation (Transact-SQL) is executed for each article in the publication. Pour exécuter sp_publication_validation (Transact-SQL) avec succès, vous devez avoir les autorisations SELECT sur toutes les colonnes des tables de la base publiée.To successfully execute sp_publication_validation (Transact-SQL), you must have SELECT permissions on all columns in the published base tables.

  2. (Facultatif) Démarrez l'Agent de distribution pour chaque abonnement s'il n'est pas déjà en cours d'exécution.(Optional) Start the Distribution Agent for each subscription if it is not already running. Pour plus d'informations, consultez Synchronize a Pull Subscription et Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  3. Vérifiez la sortie de l'agent pour le résultat de la validation.Check the agent output for the result of the validation.

Article uniqueSingle article

  1. Dans la base de données de publication sur le serveur de publication, exécutez sp_article_validation (Transact-SQL).At the Publisher on the publication database, execute sp_article_validation (Transact-SQL). Spécifiez **@publication** , le nom de l'article pour **@article** et l'une des valeurs suivantes pour **@rowcount_only** :Specify **@publication**, the name of the article for **@article**, and one of the following values for **@rowcount_only**:

    • 1 - contrôle du nombre de lignes uniquement (par défaut)1 - Rowcount check only (the default)
    • 2 - nombre de lignes et somme de contrôle binaire.2 - Rowcount and binary checksum.

    Notes

    Pour exécuter sp_article_validation (Transact-SQL) avec succès, vous devez avoir les autorisations SELECT sur toutes les colonnes des tables de la base publiée.To successfully execute sp_article_validation (Transact-SQL), you must have SELECT permissions on all columns in the published base table.

  2. (Facultatif) Démarrez l'Agent de distribution pour chaque abonnement s'il n'est pas déjà en cours d'exécution.(Optional) Start the Distribution Agent for each subscription if it is not already running. Pour plus d'informations, consultez Synchronize a Pull Subscription et Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  3. Vérifiez la sortie de l'agent pour le résultat de la validation.Check the agent output for the result of the validation.

Abonné uniqueSingle subscriber

  1. Dans la base de données de publication sur le serveur de publication, ouvrez une transaction explicite en utilisant BEGIN TRANSACTION (Transact-SQL).At the Publisher on the publication database, open an explicit transaction using BEGIN TRANSACTION (Transact-SQL).

  2. Dans la base de données de publication du serveur de publication, exécutez sp_marksubscriptionvalidation (Transact-SQL).At the Publisher on the publication database, execute sp_marksubscriptionvalidation (Transact-SQL). Spécifiez la publication pour **@publication** , le nom de l'Abonné pour **@subscriber** et le nom de la base de données d'abonnement pour **@destination_db** .Specify the publication for **@publication**, the name of the Subscriber for **@subscriber**, and the name of the subscription database for **@destination_db**.

  3. (Facultatif) Répétez l'étape 2 pour chaque abonnement en cours de validation.(Optional) Repeat step 2 for each subscription being validated.

  4. Dans la base de données de publication sur le serveur de publication, exécutez sp_article_validation (Transact-SQL).At the Publisher on the publication database, execute sp_article_validation (Transact-SQL). Spécifiez **@publication** , le nom de l'article pour **@article** et l'une des valeurs suivantes pour **@rowcount_only** :Specify **@publication**, the name of the article for **@article**, and one of the following values for **@rowcount_only**:

    • 1 - contrôle du nombre de lignes uniquement (par défaut)1 - Rowcount check only (the default)
    • 2 - nombre de lignes et somme de contrôle binaire.2 - Rowcount and binary checksum.

    Notes

    Pour exécuter sp_article_validation (Transact-SQL) avec succès, vous devez avoir les autorisations SELECT sur toutes les colonnes des tables de la base publiée.To successfully execute sp_article_validation (Transact-SQL), you must have SELECT permissions on all columns in the published base table.

  5. Dans la base de données de publication sur le serveur de publication, validez la transaction en utilisant COMMIT TRANSACTION (Transact-SQL).At the Publisher on the publication database, commit the transaction using COMMIT TRANSACTION (Transact-SQL).

  6. (Facultatif) Répétez les étapes 1 à 5 pour chaque article en cours de validation.(Optional) Repeat steps 1 through 5 for each article being validated.

  7. (Facultatif) Démarrez l'Agent de distribution s'il n'est pas déjà en cours d'exécution.(Optional) Start the Distribution Agent if it is not already running. Pour plus d'informations, consultez Synchronize a Pull Subscription et Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  8. Vérifiez la sortie de l'agent pour le résultat de la validation.Check the agent output for the result of the validation. Pour plus d'informations, voir Validate Data at the Subscriber.For more information, see Validate Data at the Subscriber.

Tous les abonnements par émission de données à une publication transactionnelleAll push subscriptions to a transactional publication

Utilisation du moniteur de réplicationUsing Replication Monitor

  1. Dans le moniteur de réplication, développez un groupe de serveurs de publication dans le volet gauche, puis développez un serveur de publication.In Replication Monitor, expand a Publisher group in the left pane, and then expand a Publisher.

  2. Cliquez avec le bouton droit sur la publication dont vous souhaitez valider les abonnements, puis cliquez sur Valider les abonnements.Right-click the publication for which you want to validate subscriptions, and then click Validate Subscriptions.

  3. Dans la boîte de dialogue Valider les abonnements , sélectionnez les abonnements à valider :In the Validate Subscriptions dialog box, select which subscriptions to validate:

    • Sélectionnez Valider tous les abonnements SQL Server.Select Validate all SQL Server subscriptions.
    • Sélectionnez Valider les abonnements suivants, puis sélectionnez un ou plusieurs abonnements.Select Validate the following subscriptions, and then select one or more subscriptions.
  4. Pour spécifier le type de validation à effectuer (nombre de lignes, ou nombre de lignes et somme de contrôle), cliquez sur Options de validation, puis spécifiez les options dans la boîte de dialogue Options de validation d'abonnement .To specify the type of validation to perform (row count, or row count and checksum) click Validation Options, and then specify options in the Subscription Validation Options dialog box.

  5. Cliquez sur OK.Click OK.

  6. Cliquez sur l'onglet Tous les abonnements .Click the All Subscriptions tab.

  7. Affichez les résultats de la validation.View validation results. Pour chaque abonnement par envoi de données :For each push subscription:

    1. Si l'agent n'est pas en cours d'exécution, cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Démarrer la synchronisation.If the agent is not running, right-click the subscription, and then click Start Synchronizing.
    2. Cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Afficher les détails.Right-click the subscription, and then click View Details.
    3. Affichez les informations dans l'onglet Historique du serveur de distribution vers l'Abonné de la zone de texte Actions dans la session sélectionnée .View information on the Distributor to Subscriber History tab in the Actions in the selected session text area.

Pour un abonnement unique à une publication de fusionFor a single subscription to a Merge Publication

Utilisation de SQL Server Management StudioUsing SQL Server Management Studio

  1. Connectez-vous au serveur de publication dans SQL Server Management StudioSQL Server Management Studio, puis développez le nœud du serveur.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Développez le dossier Réplication , puis développez le dossier Publications locales .Expand the Replication folder, and then expand the Local Publications folder.

  3. Développez la publication dont vous souhaitez valider les abonnements, cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Valider l'abonnement.Expand the publication for which you want to validate subscriptions, right-click the subscription, and then click Validate Subscription.

  4. Dans la boîte de dialogue Valider l'abonnement , sélectionnez Valider cet abonnement.In the Validate Subscription dialog box, select Validate this subscription.

  5. Pour spécifier le type de validation à effectuer (nombre de lignes, ou nombre de lignes et somme de contrôle), cliquez sur Options, puis spécifiez les options dans la boîte de dialogue Options de validation d'abonnement .To specify the type of validation to perform (row count, or row count and checksum) click Options, and then specify options in the Subscription Validation Options dialog box.

  6. Cliquez sur OK.Click OK.

  7. Affichez les résultats de la validation dans le moniteur de réplication ou dans la boîte de dialogue Afficher l'état de synchronisation :View validation results in Replication Monitor or the View Synchronization Status dialog box:

    1. Développez la publication, cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Afficher l'état de synchronisation.Expand the publication, right-click the subscription, and then click View Synchronization Status.
    2. Si l'agent n'est pas en cours d'exécution, cliquez sur Démarrer dans la boîte de dialogue Afficher l'état de synchronisation .If the agent is not running, click Start in the View Synchronization Status dialog box. La boîte de dialogue affiche des messages d'information concernant la validation.The dialog box will display informational messages regarding validation.

    Si aucun message concernant la validation ne s'affiche, l'agent a déjà consigné un message à ce sujet dans le journal.If you do not see any messages regarding validation, the agent has already logged a subsequent message. Dans ce cas, affichez les résultats de la validation dans le moniteur de réplication.In this case, view the validation results in Replication Monitor. Pour plus d'informations, consultez les procédures du moniteur de réplication dans cette rubrique.For more information, see the Replication Monitor how to procedures in this topic.

Pour tous les abonnements à une publication de fusionFor all subscriptions to a Merge Publication

Utilisation de SQL Server Management StudioUsing SQL Server Management Studio

  1. Connectez-vous au serveur de publication dans SQL Server Management StudioSQL Server Management Studio, puis développez le nœud du serveur.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Développez le dossier Réplication , puis développez le dossier Publications locales .Expand the Replication folder, and then expand the Local Publications folder.

  3. Cliquez avec le bouton droit sur la publication dont vous souhaitez valider les abonnements, puis cliquez sur Valider tous les abonnements.Right-click the publication for which you want to validate subscriptions, and then click Validate All Subscriptions.

  4. Dans la boîte de dialogue Valider tous les abonnements , spécifiez le type de validation à effectuer (nombre de lignes, ou nombre de lignes et total de contrôle).In the Validate All Subscriptions dialog box, specify the type of validation to perform (row count, or row count and checksum).

  5. Cliquez sur OK.Click OK.

  6. Affichez les résultats de la validation dans le moniteur de réplication ou dans la boîte de dialogue Afficher l'état de synchronisation .View validation results in Replication Monitor or the View Synchronization Status dialog box. Pour chaque abonnement :For each subscription:

    1. Développez la publication, cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Afficher l'état de synchronisation.Expand the publication, right-click the subscription, and then click View Synchronization Status.
    2. Si l'agent n'est pas en cours d'exécution, cliquez sur Démarrer dans la boîte de dialogue Afficher l'état de synchronisation .If the agent is not running, click Start in the View Synchronization Status dialog box. La boîte de dialogue affiche des messages d'information concernant la validation.The dialog box will display informational messages regarding validation.

    Si aucun message concernant la validation ne s'affiche, l'agent a déjà consigné un message à ce sujet dans le journal.If you do not see any messages regarding validation, the agent has already logged a subsequent message. Dans ce cas, affichez les résultats de la validation dans le moniteur de réplication.In this case, view the validation results in Replication Monitor. Pour plus d'informations, consultez les procédures du moniteur de réplication dans cette rubrique.For more information, see the Replication Monitor how to procedures in this topic.

Pour un abonnement par émission de données unique à une publication de fusionFor a single push subscription to a Merge Publication

Utilisation du moniteur de réplicationUsing Replication Monitor

  1. Dans le moniteur de réplication, développez un groupe de serveurs de publication dans le volet gauche, développez un serveur de publication, puis cliquez sur une publication.In Replication Monitor, expand a Publisher group in the left pane, expand a Publisher, and then click a publication.
  2. Cliquez sur l'onglet Tous les abonnements .Click the All Subscriptions tab.
  3. Cliquez avec le bouton droit sur l'abonnement que vous souhaitez valider, puis cliquez sur Valider l'abonnement.Right-click the subscription you want to validate, and then click Validate Subscription.
  4. Dans la boîte de dialogue Valider l'abonnement , sélectionnez Valider cet abonnement.In the Validate Subscription dialog box, select Validate this subscription.
  5. Pour spécifier le type de validation à effectuer (nombre de lignes, ou nombre de lignes et somme de contrôle), cliquez sur Options, puis spécifiez les options dans la boîte de dialogue Options de validation d'abonnement .To specify the type of validation to perform (row count, or row count and checksum) click Options, and then specify options in the Subscription Validation Options dialog box.
  6. Cliquez sur OK.Click OK.

  7. Cliquez sur l'onglet Tous les abonnements .Click the All Subscriptions tab.
  8. Affichez les résultats de la validation :View validation results:
    1. Si l'agent n'est pas en cours d'exécution, cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Démarrer la synchronisation.If the agent is not running, right-click the subscription, and then click Start Synchronizing.
    2. Cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Afficher les détails.Right-click the subscription, and then click View Details.
    3. Affichez les informations dans l'onglet Historique de synchronisation de la zone de texte Dernier message de la session sélectionnée .View information on the Synchronization History tab in the Last message of the selected session text area.

Utilisation de Transact-SQLUsing Transact-SQL

  1. Dans la base de données de publication sur le serveur de publication, exécutez sp_validatemergesubscription (Transact-SQL).At the Publisher on the publication database, execute sp_validatemergesubscription (Transact-SQL). Spécifiez **@publication** , le nom de l'Abonné pour **@subscriber** , le nom de la base de données d'abonnement pour **@subscriber_db** et l'une des valeurs suivantes pour **@level** :Specify **@publication**, the name of the Subscriber for **@subscriber**, the name of the subscription database for **@subscriber_db**, and one of the following values for **@level**:

    • 1 - validation du nombre de lignes uniquement.1 - Rowcount-only validation.
    • 3 - validation de la somme de contrôle binaire du nombre de lignes.3 - Rowcount binary checksum validation.

    Les abonnements sélectionnés sont ainsi marqués pour la validation.This marks the selected subscription for validation.

  2. Démarrez l'agent de fusion pour chaque abonnement.Start the merge agent for each subscription. Pour plus d'informations, consultez Synchronize a Pull Subscription et Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  3. Vérifiez la sortie de l'agent pour le résultat de la validation.Check the agent output for the result of the validation.

  4. Répétez les étapes 1 à 3 pour chaque abonnement en cours de validation.Repeat steps 1 through 3 for each subscription being validated.

Notes

Un abonnement à une publication de fusion peut également être validé à la fin d'une synchronisation en spécifiant le paramètre -Validate lors de l'exécution de l' Replication Merge Agent.A subscription to a merge publication can also be validated at the end of a synchronization by specifying the -Validate parameter when running the Replication Merge Agent.

Pour tous les abonnements par émission de données à une publication de fusionFor all push subscriptions to a Merge Publication

Utilisation du moniteur de réplicationUsing Replication Monitor

  1. Dans le moniteur de réplication, développez un groupe de serveurs de publication dans le volet gauche, puis développez un serveur de publication.In Replication Monitor, expand a Publisher group in the left pane, and then expand a Publisher.
  2. Cliquez avec le bouton droit sur la publication dont vous souhaitez valider les abonnements, puis cliquez sur Valider tous les abonnements.Right-click the publication for which you want to validate subscriptions, and then click Validate All Subscriptions.
  3. Dans la boîte de dialogue Valider tous les abonnements , spécifiez le type de validation à effectuer (nombre de lignes, ou nombre de lignes et total de contrôle).In the Validate All Subscriptions dialog box, specify the type of validation to perform (row count, or row count and checksum).
  4. Cliquez sur OK.Click OK.

  5. Cliquez sur l'onglet Tous les abonnements .Click the All Subscriptions tab.
  6. Affichez les résultats de la validation.View validation results. Pour chaque abonnement par envoi de données :For each push subscription:
    1. Si l'agent n'est pas en cours d'exécution, cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Démarrer la synchronisation.If the agent is not running, right-click the subscription, and then click Start Synchronizing.
    2. Cliquez avec le bouton droit sur l'abonnement, puis cliquez sur Afficher les détails.Right-click the subscription, and then click View Details.
    3. Affichez les informations dans l'onglet Historique de synchronisation de la zone de texte Dernier message de la session sélectionnée .View information on the Synchronization History tab in the Last message of the selected session text area.

Utilisation de Transact-SQLUsing Transact-SQL

  1. Dans la base de données de publication sur le serveur de publication, exécutez sp_validatemergepublication (Transact-SQL).At the Publisher on the publication database, execute sp_validatemergepublication (Transact-SQL). Spécifiez **@publication** et l'une des valeurs suivantes pour **@level** :Specify **@publication** and one of the following values for **@level**:

    • 1 - validation du nombre de lignes uniquement.1 - Rowcount-only validation.
    • 3 - validation de la somme de contrôle binaire du nombre de lignes.3 - Rowcount binary checksum validation.

    Tous les abonnements sont ainsi marqués pour la validation.This marks all subscriptions for validation.

  2. Démarrez l'agent de fusion pour chaque abonnement.Start the merge agent for each subscription. Pour plus d'informations, consultez Synchronize a Pull Subscription et Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription.

  3. Vérifiez la sortie de l'agent pour le résultat de la validation.Check the agent output for the result of the validation. Pour plus d'informations, voir Validate Data at the Subscriber.For more information, see Validate Data at the Subscriber.

Valider des données à l’aide des paramètres de l’Agent de fusionValidate data using Merge Agent parameters

  1. Démarrez l'Agent de fusion sur l'Abonné (abonnement par extraction) ou sur le serveur de distribution (abonnement par émission de données) à partir de l'invite de commandes de l'une des façons suivantes.Start the Merge Agent at the Subscriber (pull subscription) or at the Distributor (push subscription) from the command prompt in one of the following ways.

    • Spécifiez une valeur de 1 (nombre de lignes) ou 3 (nombre de lignes et somme de contrôle de binaire) pour le paramètre -Validate .Specifying a value of 1 (rowcount) or 3 (rowcount and binary checksum) for the -Validate parameter.
    • Spécifiez la validation du nombre de lignes ou le nombre de lignes et la validation de la somme de contrôle pour le paramètre -ProfileName .Specifying rowcount validation or rowcount and checksum validation for the -ProfileName parameter.

    Pour plus d'informations, consultez Synchronize a Pull Subscription ou Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription or Synchronize a Push Subscription.

Utilisation d'objets RMO (Replication Management Objects)Using Replication Management Objects (RMO)

La réplication permet d'utiliser les objets RMO (Replication Management Objects) pour vérifier par programmation que les données de l'Abonné correspondent à celles du serveur de publication.Replication enables you to use Replication Management Objects (RMO) to programmatically validate that data at the Subscriber matches data at the Publisher. Les objets que vous utilisez dépendent du type de topologie de réplication.The objects you use depend on the type of replication topology. La réplication transactionnelle requiert la validation de tous les abonnements à une publication.Transactional replication requires validation of all subscriptions to a publication.

Notes

Consultez l' Exemple (RMO)plus loin dans cette rubrique.For an example, see Example (RMO), later in this section.

Pour valider les données de tous les articles d'une publication transactionnelleTo validate data for all articles in a transactional publication

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Créez une instance de la classe TransPublication .Create an instance of the TransPublication class. Définissez les propriétés Name et DatabaseName de la publication.Set the Name and DatabaseName properties for the publication. Définissez la propriété ConnectionContext en spécifiant la connexion créée à l'étape 1.Set the ConnectionContext property to the connection created in step 1.

  3. Appelez la méthode LoadProperties pour obtenir les propriétés restantes de l'objet.Call the LoadProperties method to get the remaining properties of the object. Si cette méthode retourne false, soit les propriétés de la publication ont été définies de manière incorrecte à l'étape 2, soit la publication n'existe pas.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Appelez la méthode ValidatePublication .Call the ValidatePublication method. Passez les éléments suivants :Pass the following:

    • ValidationOption

    • ValidationMethod

    • Une valeur booléenne qui indique s'il faut arrêter l'Agent de distribution une fois la validation terminée.A Boolean that indicates whether to stop the Distribution Agent after validation is completed.

    Cela marque les articles pour la validation.This marks the articles for validation.

  5. S'il n'est pas déjà en cours d'exécution, démarrez l'Agent de distribution pour synchroniser chaque abonnement.If not already running, start the Distribution Agent to synchronize each subscription. Pour plus d'informations, consultez Synchronize a Push Subscription ou Synchronize a Pull Subscription.For more information, see Synchronize a Push Subscription or Synchronize a Pull Subscription. Le résultat de l'opération de validation est écrit dans l'historique de l'agent.The result of the validation operation is written to the agent history. Pour plus d'informations, voir Monitoring Replication.For more information, see Monitoring Replication.

Pour valider les données de tous les abonnements à une publication de fusionTo validate data in all subscriptions to a merge publication

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Créez une instance de la classe MergePublication .Create an instance of the MergePublication class. Définissez les propriétés Name et DatabaseName de la publication.Set the Name and DatabaseName properties for the publication. Définissez la propriété ConnectionContext en spécifiant la connexion créée à l'étape 1.Set the ConnectionContext property to the connection created in step 1.

  3. Appelez la méthode LoadProperties pour obtenir les propriétés restantes de l'objet.Call the LoadProperties method to get the remaining properties of the object. Si cette méthode retourne false, soit les propriétés de la publication ont été définies de manière incorrecte à l'étape 2, soit la publication n'existe pas.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Appelez la méthode ValidatePublication .Call the ValidatePublication method. Passez le ValidationOptionsouhaité.Pass the desired ValidationOption.

  5. Exécutez l'Agent de fusion pour chaque abonnement pour démarrer la validation ou attendez que l'agent planifié suivant ne s'exécute.Run the Merge Agent for each subscription to start validation, or wait for the next scheduled agent run. Pour plus d'informations, consultez Synchronize a Pull Subscription et Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription. Le résultat de l'opération de validation est écrit dans l'historique de l'agent, que vous affichez en utilisant le moniteur de réplication.The result of the validation operation is written to the agent history, which you view by using Replication Monitor. Pour plus d'informations, voir Monitoring Replication.For more information, see Monitoring Replication.

Pour valider les données d'un seul abonnement à une publication de fusionTo validate data in a single subscription to a merge publication

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Créez une instance de la classe MergePublication .Create an instance of the MergePublication class. Définissez les propriétés Name et DatabaseName de la publication.Set the Name and DatabaseName properties for the publication. Définissez la propriété ConnectionContext en spécifiant la connexion créée à l'étape 1.Set the ConnectionContext property to the connection created in step 1.

  3. Appelez la méthode LoadProperties pour obtenir les propriétés restantes de l'objet.Call the LoadProperties method to get the remaining properties of the object. Si cette méthode retourne false, soit les propriétés de la publication ont été définies de manière incorrecte à l'étape 2, soit la publication n'existe pas.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Appelez la méthode ValidateSubscription .Call the ValidateSubscription method. Passez le nom de l'Abonné et de la base de données d'abonnement en cours de validation, ainsi que le ValidationOptionsouhaité.Pass the name of the Subscriber and subscription database being validated and the desired ValidationOption.

  5. Exécutez l'Agent de fusion de l'abonnement pour démarrer la validation ou attendez que l'agent planifié suivant ne s'exécute.Run the Merge Agent for the subscription to start validation, or wait for the next scheduled agent run. Pour plus d'informations, consultez Synchronize a Pull Subscription et Synchronize a Push Subscription.For more information, see Synchronize a Pull Subscription and Synchronize a Push Subscription. Le résultat de l'opération de validation est écrit dans l'historique de l'agent, que vous affichez en utilisant le moniteur de réplication.The result of the validation operation is written to the agent history, which you view by using Replication Monitor. Pour plus d'informations, voir Monitoring Replication.For more information, see Monitoring Replication.

Exemple (RMO)Example (RMO)

Cet exemple marque tous les abonnements à une publication transactionnelle pour une validation du nombre de lignes.This example marks all subscriptions to a transactional publication for rowcount validation.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2012";

TransPublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new TransPublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    // If we can't get the properties for this publication, 
    // throw an application exception.
    if (publication.LoadProperties())
    {
        // Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly,
            ValidationMethod.ConditionalFast, false);

        // If not already running, start the Distribution Agent at each 
        // Subscriber to synchronize and validate the subscriptions.
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(
        "Subscription validation could not be initiated.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2012"

Dim publication As TransPublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then

        ' Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly, _
         ValidationMethod.ConditionalFast, False)

        ' If not already running, start the Distribution Agent at each 
        ' Subscriber to synchronize and validate the subscriptions.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
     "Subscription validation could not be initiated.", ex)
Finally
    conn.Disconnect()
End Try

Cet exemple marque un abonnement spécifique à une publication de fusion pour une validation du nombre de lignes.This example marks a specific subscription to a merge publication for rowcount validation.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";

MergePublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new MergePublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;


    // If we can't get the properties for this merge publication, then throw an application exception.
    if (publication.LoadProperties())
    {
        // Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName,
            subscriptionDbName, ValidationOption.RowCountOnly);
        
        // Start the Merge Agent to synchronize and validate the subscription.
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(String.Format(
        "The subscription at {0} to the {1} publication could not " +
        "be validated.", subscriberName, publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName, _
         subscriptionDbName, ValidationOption.RowCountOnly)

        ' Start the Merge Agent to synchronize and validate the subscription.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException(String.Format( _
     "The subscription at {0} to the {1} publication could not " + _
     "be validated.", subscriberName, publicationName), ex)
Finally
    conn.Disconnect()
End Try

Voir aussiSee Also

Best Practices for Replication AdministrationBest Practices for Replication Administration