Remarque
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.
Cette rubrique explique comment valider les données sur l’Abonné dans SQL Server 2014 à l’aide de SQL Server Management Studio, Transact-SQL ou Replication Management Objects (RMO).
La réplication transactionnelle et de fusion vous permet de vérifier que les données chez l'abonné correspondent aux données chez l'éditeur. La validation peut être effectuée pour des abonnements spécifiques ou pour tous les abonnements à une publication. Spécifiez l’un des types de validation suivants et l’Agent de distribution ou l’Agent de fusion valide les données la prochaine fois qu’elle s’exécute :
- Nombre de lignes uniquement. Cela 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 valide pas que le contenu des lignes correspond. La validation du nombre de lignes offre une approche légère de la validation qui peut vous faire connaître les problèmes liés à vos données.
- Nombre de lignes et somme de contrôle binaire. Outre le fait de compter le nombre de lignes chez l'Éditeur et 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. Si la vérification du nombre de lignes échoue, la somme de contrôle n’est pas effectuée.
Outre la validation de la correspondance des données entre l’Abonné et le Serveur de publication, la réplication de fusion permet de s’assurer que les données sont correctement partitionnées pour chaque Abonné. Pour plus d’informations, consultez Valider les informations de partition pour un abonné de fusion.
Fonctionnement de la validation des données
SQL Server valide les données en calculant un nombre de lignes ou une somme de contrôle sur le serveur de publication, puis en comparant ces valeurs au nombre de lignes ou à la somme de contrôle calculée sur l’Abonné. Une valeur est calculée pour l’ensemble de la table de publication et une valeur est calculée pour l’ensemble de la table d’abonnement, mais les données dans text, ntextou image les colonnes ne sont pas incluses dans les calculs.
Pendant que les calculs sont effectués, les verrous partagés sont placés temporairement sur les tables pour lesquelles des comptes de ligne ou des sommes de contrôle sont exécutés, mais les calculs sont effectués rapidement et les verrous partagés supprimés, généralement en quelques secondes.
Lorsqu'on utilise des sommes de contrôle binaires, le contrôle de redondance cyclique (CRC) de 32 bits est effectué à raison de colonne par colonne, plutôt que sur la ligne physique de la page de données. Cela permet aux colonnes avec la table d’être dans n’importe quel ordre physiquement sur la page de données, mais toujours de calculer le même CRC pour la ligne. La validation de la somme de contrôle binaire peut être utilisée lorsqu'il existe des filtres de ligne ou de colonne sur la publication.
La validation des données est un processus en trois parties :
Un abonnement unique ou tous les abonnements à une publication sont marqués pour validation. Marquez les abonnements pour la validation dans les boîtes de dialogue Valider l’abonnement, Valider les abonnements et Valider tous les abonnements , qui sont disponibles dans le dossier Publications locales et dans le dossier Abonnements locaux dans MicrosoftSQL Server Management Studio. Vous pouvez également marquer les abonnements à partir de l’onglet Tous les abonnements , de l’onglet Liste de surveillance des abonnements et du nœud publications dans le Moniteur de réplication. Pour plus d’informations sur le démarrage du Moniteur de réplication, consultez Démarrer le moniteur de réplication.
Un abonnement est validé la prochaine fois qu’il est synchronisé par l’Agent de distribution (pour la réplication transactionnelle) ou l’Agent de fusion (pour la réplication de fusion). 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.
Affichez les résultats de validation :
- Dans les fenêtres détaillées 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.
- Dans la boîte de dialogue Afficher l’état de synchronisation dans Management Studio.
Considérations et restrictions
- Les procédures du Moniteur de réplication concernent uniquement les abonnements Push, car les abonnements par extraction ne peuvent pas être synchronisés dans le Moniteur de réplication. Toutefois, vous pouvez marquer un abonnement pour la validation et afficher les résultats de validation pour les abonnements par extraction dans le Moniteur de réplication.
- Les résultats de validation indiquent si la validation a réussi ou échoué, mais ne spécifiez pas les lignes qui ont échoué si une défaillance s’est produite. Pour comparer les données sur le serveur de publication et l’Abonné, utilisez l’utilitaire tablediff. Pour plus d’informations sur l’utilisation de cet utilitaire avec des données répliquées, consultez Comparaison des tables répliquées pour les différences (programmation de réplication).
Prenez en compte les problèmes suivants lors de la validation des données :
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 l’activité sur le serveur de publication lors de la validation).
Étant donné que les checksums et les checksums binaires peuvent nécessiter de grandes quantités de ressources processeur lors de la validation d’un volumineux jeu de données, vous devez planifier la validation lorsqu'il y a le moins d'activité sur les serveurs utilisés dans la réplication.
La réplication valide uniquement les tables ; elle ne vérifie pas que les articles se limitant au schéma (tels que les procédures stockées) sont identiques à l’Éditeur et à l’Abonné.
La somme de contrôle binaire peut être utilisée avec n’importe quelle table publiée. La vérification par somme de contrôle ne peut pas valider les tables avec des filtres de colonnes, ni avec des structures de tables logiques où les offsets de colonnes diffèrent (en raison des instructions ALTER TABLE qui suppriment ou ajoutent des colonnes).
La validation de réplication utilise les fonctions
checksumet binary_checksum. Pour plus d’informations sur leur comportement, consultez CHECKSUM (Transact-SQL) et 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. Cela peut se produire si vous effectuez l’une des opérations suivantes :
- Définissez explicitement les options de schéma pour mapper les types de données pour les versions antérieures de SQL Server.
- Définissez le niveau de compatibilité de la publication pour une publication de fusion sur une version antérieure de SQL Server et les tables publiées contiennent un ou plusieurs types de données qui doivent être mappés pour cette version.
- Initialisez manuellement un abonnement et utilisez différents types de données sur l’Abonné.
Les sommes de contrôle et les validations de somme de contrôle binaires ne sont pas prises en charge dans le cadre des abonnements transformables pour la réplication transactionnelle.
La validation n’est pas prise en charge pour les données répliquées vers des abonnés non-SQL Server.
Résultats de la validation des données
Une fois la validation terminée, l’Agent de distribution ou l’Agent de fusion journalise les messages concernant la réussite ou l’échec (la réplication ne signale pas les lignes ayant échoué). Ces messages peuvent être affichés dans SQL Server Management Studio, le Moniteur de réplication et les tables système de réplication. La rubrique de procédure répertoriée ci-dessus montre comment exécuter la validation et afficher les résultats.
Pour gérer les échecs de validation, tenez compte des éléments suivants :
Configurez l’alerte de réplication nommée Réplication : l’Abonné a échoué la validation des données afin que vous soyez averti de l’échec. Pour plus d’informations, consultez [Configurer des alertes de réplication prédéfinies (SQL Server Management Studio)(administration/configure-prédéfini-replication-alerts-sql-server-management-studio.md).
Le fait que la validation ait échoué est-il un problème pour votre application ? Si l’échec de validation est un problème, mettez manuellement à jour les données afin qu’elles soient synchronisées ou réinitialisent l’abonnement :
Les données peuvent être mises à jour à l’aide de l’utilitaire tablediff. Pour plus d’informations sur l’utilisation de cet utilitaire, consultez Comparer les tables répliquées pour les différences (programmation de réplication).
Pour plus d’informations sur la réinitialisation, consultez Réinitialiser les abonnements.
Articles dans la réplication transactionnelle
Utilisation de SQL Server Management Studio
Connectez-vous au serveur de publication dans SQL Server Management Studio, puis développez le nœud du serveur.
Développez le dossier Réplication , puis développez le dossier Publications locales .
Cliquez avec le bouton droit sur la publication pour laquelle vous souhaitez valider les abonnements, puis cliquez sur Valider les abonnements.
Dans la boîte de dialogue Valider les abonnements, sélectionnez les abonnements à valider :
- Sélectionnez Valider tous les abonnements SQL Server.
- Sélectionnez Valider les abonnements suivants, puis sélectionnez un ou plusieurs abonnements.
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 .
Cliquez sur OK.
Afficher les résultats de validation dans le Moniteur de réplication ou la boîte de dialogue Afficher l’état de synchronisation . Pour chaque abonnement :
- Développez la publication, cliquez avec le bouton droit sur l’abonnement, puis cliquez sur Afficher l’état de synchronisation.
- 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 . La boîte de dialogue affiche des messages d’information concernant la validation.
Si vous ne voyez aucun message concernant la validation, l’agent a déjà enregistré un message ultérieur. Dans ce cas, affichez les résultats de validation dans le Moniteur de réplication. Pour plus d'informations, consultez les procédures du guide d'utilisation du moniteur de réplication dans cette rubrique.
Utilisation de Transact-SQL (T-SQL)
Tous les articles
Sur le serveur de l'éditeur sur la base de données de publication, exécutez sp_publication_validation (Transact-SQL). Spécifiez @publication et l’une des valeurs suivantes pour @rowcount_only :
- 1 - Vérification du nombre de lignes uniquement (valeur par défaut)
- 2 - nombre de lignes et somme de contrôle binaire.
Remarque
Lorsque vous exécutez sp_publication_validation (Transact-SQL),sp_article_validation (Transact-SQL) est exécuté pour chaque article de la publication. Pour exécuter correctement sp_publication_validation (Transact-SQL),vous devez disposer d’autorisations SELECT sur toutes les colonnes des tables de base publiées.
(Facultatif) Démarrez l’Agent de distribution pour chaque abonnement s’il n’est pas déjà en cours d’exécution. Pour plus d’informations, consultez Synchroniser un abonnement Pull et Synchroniser un abonnement Push.
Vérifiez la sortie de l’agent pour le résultat de la validation. Pour plus d’informations, consultez Validation des données répliquées.
Article unique
Sur le serveur de publication sur la base de données de publication, exécutez sp_article_validation (Transact-SQL). Spécifiez @publication, le nom de l’article pour @article et l’une des valeurs suivantes pour @rowcount_only :
- 1 - Vérification du nombre de lignes uniquement (valeur par défaut)
- 2 - Comptage des lignes et somme de contrôle binaire.
Remarque
Pour exécuter correctement sp_article_validation (Transact-SQL),vous devez disposer d’autorisations SELECT sur toutes les colonnes de la table de base publiée.
(Facultatif) Démarrez l’Agent de distribution pour chaque abonnement s’il n’est pas déjà en cours d’exécution. Pour plus d’informations, consultez Synchroniser un abonnement par extraction et synchroniser un abonnement Push.
Vérifiez la sortie de l’agent pour le résultat de la validation. Pour plus d’informations, consultez Validation des données répliquées.
Abonné unique
Sur la base de données de publication du serveur de publication, ouvrez une transaction explicite à l’aide de BEGIN TRANSACTION (Transact-SQL).
Sur la base de données de publication du serveur de publication, exécutez 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.
(Facultatif) Répétez l’étape 2 pour chaque abonnement validé.
Chez le Publisher sur la base de données de publication, exécutez sp_article_validation (Transact-SQL). Spécifiez @publication, le nom de l’article pour @article et l’une des valeurs suivantes pour @rowcount_only :
- 1 - Vérification du nombre de lignes uniquement (valeur par défaut)
- 2 - Comptage de lignes et checksum binaire.
Remarque
Pour exécuter correctement sp_article_validation (Transact-SQL),vous devez disposer d’autorisations SELECT sur toutes les colonnes de la table de base publiée.
Sur le serveur de publication sur la base de données de publication, validez la transaction à l’aide de COMMIT TRANSACTION (Transact-SQL).
(Facultatif) Répétez les étapes 1 à 5 pour chaque article validé.
(Facultatif) Démarrez l’Agent de distribution s’il n’est pas déjà en cours d’exécution. Pour plus d’informations, consultez Synchroniser un abonnement par extraction et synchroniser un abonnement Push.
Consultez la sortie de l’agent pour le résultat de la validation. Pour plus d’informations, consultez Valider les données sur l’Abonné.
Tous les abonnements Push à une publication transactionnelle
Utilisation du moniteur de réplication
- 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.
- Cliquez avec le bouton droit sur la publication pour laquelle vous souhaitez valider les abonnements, puis cliquez sur Valider les abonnements.
- Dans la boîte de dialogue Valider les abonnements, sélectionnez les abonnements à valider :
- Sélectionnez Valider tous les abonnements SQL Server.
- Sélectionnez Valider les abonnements suivants, puis sélectionnez un ou plusieurs abonnements.
- 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 .
- Cliquez sur OK.
- Cliquez sur l’onglet Tous les abonnements .
- Afficher les résultats de validation. Pour chaque abonnement Push :
- 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.
- Cliquez avec le bouton droit sur l’abonnement, puis cliquez sur Afficher les détails.
- Affichez des informations sur l’onglet Historique du serveur de distribution vers l’abonné dans les actions de la zone de texte de session sélectionnée .
Pour un seul abonnement à une publication de fusion
Utilisation de SQL Server Management Studio
Connectez-vous au serveur de publication dans SQL Server Management Studio, puis développez le nœud du serveur.
Développez le dossier Réplication , puis développez le dossier Publications locales .
Développez la publication pour laquelle vous souhaitez valider les abonnements, cliquez avec le bouton droit sur l’abonnement, puis cliquez sur Valider l’abonnement.
Dans la boîte de dialogue Valider l’abonnement , sélectionnez Valider cet abonnement.
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 .
Cliquez sur OK.
Affichez les résultats de validation dans le Moniteur de réplication ou la boîte de dialogue Afficher l’état de synchronisation :
- Développez la publication, cliquez avec le bouton droit sur l’abonnement, puis cliquez sur Afficher l’état de synchronisation.
- 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 . La boîte de dialogue affiche des messages d’information concernant la validation.
Si vous ne voyez aucun message concernant la validation, l’agent a déjà enregistré un message ultérieur. Dans ce cas, affichez les résultats de validation dans le Moniteur de réplication. Pour plus d’informations, consultez le guide du moniteur de réplication pour les procédures de cette rubrique.
Utilisation de Transact-SQL (T-SQL)
Sur le serveur de publication dans la base de données de publication, exécutez 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 :
- 1 - Validation de nombre de lignes uniquement.
- 3 - Validation de la somme de contrôle binaire rowcount.
Cela marque l’abonnement sélectionné pour la validation.
Démarrez l’agent de fusion pour chaque abonnement. Pour plus d’informations, consultez Synchroniser un abonnement par extraction et synchroniser un abonnement Push.
Vérifiez les résultats de l’agent pour le résultat de la validation.
Répétez les étapes 1 à 3 pour chaque abonnement validé.
Remarque
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’Agent de fusion de réplication.
Pour tous les abonnements à une publication de fusion
Utilisation de SQL Server Management Studio
Connectez-vous au serveur de publication dans SQL Server Management Studio, puis développez le nœud du serveur.
Développez le dossier Réplication , puis développez le dossier Publications locales .
Cliquez avec le bouton droit sur la publication pour laquelle vous souhaitez valider les abonnements, puis cliquez sur Valider tous les abonnements.
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 somme de contrôle).
Cliquez sur OK.
Afficher les résultats de validation dans le Moniteur de réplication ou la boîte de dialogue Afficher l’état de synchronisation . Pour chaque abonnement :
- Développez la publication, cliquez avec le bouton droit sur l’abonnement, puis cliquez sur Afficher l’état de synchronisation.
- 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 . La boîte de dialogue affiche des messages d’information concernant la validation.
Si vous ne voyez aucun message concernant la validation, l’agent a déjà enregistré un message ultérieur. Dans ce cas, affichez les résultats de validation dans le Moniteur de réplication. Pour plus d’informations, consultez les procédures du moniteur de réplication décrites dans cette rubrique.
Utilisation de Transact-SQL (T-SQL)
Sur le serveur de publication sur la base de données de publication, exécutez sp_validatemergepublication (Transact-SQL). Spécifiez @publication et l’une des valeurs suivantes pour @level :
- 1 - Validation de nombre de lignes uniquement.
- 3 - Validation de la somme de contrôle binaire rowcount.
Cela marque tous les abonnements à des fins de validation.
Démarrez l’agent de fusion pour chaque abonnement. Pour plus d’informations, consultez Synchroniser un abonnement par extraction et synchroniser un abonnement Push.
Vérifiez la sortie de l’agent pour le résultat de la validation. Pour plus d’informations, consultez Valider les données sur l’Abonné.
Pour un abonnement Push unique à une publication de fusion
Utilisation du moniteur de réplication
- 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.
- Cliquez sur l’onglet Tous les abonnements .
- Cliquez avec le bouton droit sur l’abonnement que vous souhaitez valider, puis cliquez sur Valider l’abonnement.
- Dans la boîte de dialogue Valider l’abonnement , sélectionnez Valider cet abonnement.
- 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 .
- Cliquez sur OK.
- Cliquez sur l’onglet Tous les abonnements .
- Afficher les résultats de validation :
- 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.
- Cliquez avec le bouton droit sur l’abonnement, puis cliquez sur Afficher les détails.
- Affichez des informations sur l’onglet Historique de synchronisation dans le dernier message de la zone de texte de session sélectionnée .
Pour tous les abonnements push vers une publication de fusion
Utilisation du moniteur de réplication
- 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.
- Cliquez avec le bouton droit sur la publication pour laquelle vous souhaitez valider les abonnements, puis cliquez sur Valider tous les abonnements.
- 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 somme de contrôle).
- Cliquez sur OK.
- Cliquez sur l’onglet Tous les abonnements .
- Afficher les résultats de validation. Pour chaque abonnement Push :
- 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.
- Cliquez avec le bouton droit sur l’abonnement, puis cliquez sur Afficher les détails.
- Affichez des informations sur l’onglet Historique de synchronisation dans le dernier message de la zone de texte de session sélectionnée .
Valider des données à l’aide des paramètres de l’Agent de fusion
Démarrez l’Agent de fusion sur l’Abonné (abonnement par extraction) ou sur le serveur de distribution (abonnement Push) à partir de l’invite de commandes de l’une des manières suivantes.
- Spécification d’une valeur de 1 (rowcount) ou 3 (nombre de lignes et somme de contrôle binaire) pour le paramètre -Validate .
- Spécification de la validation du compte de lignes ou de la validation du compte de lignes et du checksum pour le paramètre -ProfileName.
Pour plus d’informations, consultez Synchroniser un abonnement par extraction ou synchroniser un abonnement Push.
Utilisation des objets RMO (Replication Management Objects)
La réplication vous permet d’utiliser des objets RMO (Replication Management Objects) pour valider par programmation que les données sur l’Abonné correspondent aux données sur le serveur de publication. Les objets que vous utilisez dépendent du type de topologie de réplication. La réplication transactionnelle nécessite la validation de tous les abonnements à une publication.
Remarque
Pour obtenir un exemple, consultez l’exemple (RMO), plus loin dans cette section.
Pour valider les données de tous les articles d’une publication transactionnelle
Créez une connexion au serveur de publication à l’aide de la ServerConnection classe.
Créez une instance de la TransPublication classe. Définissez les propriétés Name et DatabaseName pour la publication. Définissez la ConnectionContext propriété sur la connexion créée à l’étape 1.
Appelez la LoadProperties méthode pour obtenir les propriétés restantes de l’objet. Si cette méthode retourne
false, les propriétés de publication de l’étape 2 ont été définies de manière incorrecte ou la publication n’existe pas.Appelez la méthode ValidatePublication . Passez ce qui suit :
- ValidationOption
- ValidationMethod
- Boolean qui indique s’il faut arrêter l’Agent de distribution une fois la validation terminée.
Cela marque les articles pour validation.
S’il n’est pas déjà en cours d’exécution, démarrez l’Agent de distribution pour synchroniser chaque abonnement. Pour plus d'informations, consultez Synchroniser un abonnement Push ou Synchroniser un abonnement par extraction. Le résultat de l’opération de validation est écrit dans l’historique de l’agent. Pour plus d’informations, consultez Surveillance de la réplication.
Pour valider les données dans tous les abonnements à une publication de fusion
- Créez une connexion au serveur de publication à l’aide de la ServerConnection classe.
- Créez une instance de la MergePublication classe. Définissez les propriétés Name et DatabaseName pour la publication. Définissez la ConnectionContext propriété sur la connexion créée à l’étape 1.
- Appelez la LoadProperties méthode pour obtenir les propriétés restantes de l’objet. Si cette méthode retourne
false, les propriétés de publication de l’étape 2 ont été définies de manière incorrecte ou la publication n’existe pas. - Appelez la méthode ValidatePublication . Passez le ValidationOption souhaité.
- Exécutez l’Agent de fusion pour chaque abonnement afin de démarrer la validation, ou attendez la prochaine exécution programmée de l’agent. Pour plus d’informations, consultez Synchroniser un abonnement par extraction et synchroniser un abonnement Push. Le résultat de l’opération de validation est écrit dans l’historique de l’agent, que vous affichez à l’aide du Moniteur de réplication. Pour plus d’informations, consultez Surveillance de la réplication.
Pour valider les données dans un seul abonnement à une publication de fusion
- Créez une connexion au serveur de publication à l’aide de la ServerConnection classe.
- Créez une instance de la MergePublication classe. Définissez les propriétés Name et DatabaseName de la publication. Définissez la ConnectionContext propriété sur la connexion créée à l’étape 1.
- Appelez la LoadProperties méthode pour obtenir les propriétés restantes de l’objet. Si cette méthode retourne
false, les propriétés de publication de l’étape 2 ont été définies de manière incorrecte ou la publication n’existe pas. - Appelez la méthode ValidateSubscription . Transmettez le nom de l'Abonné, celui de la base de données d'abonnement en cours de validation, et le ValidationOption souhaité.
- Exécutez l’Agent de fusion pour que l’abonnement démarre la validation, ou attendez l’exécution de l’agent planifié suivant. Pour plus d’informations, consultez Synchroniser un abonnement par extraction et synchroniser un abonnement Push. Le résultat de l’opération de validation est écrit dans l’historique de l’agent, que vous affichez à l’aide du Moniteur de réplication. Pour plus d’informations, consultez Surveillance de la réplication.
Exemple (RMO)
Cet exemple marque tous les abonnements à une publication transactionnelle pour la validation du nombre de lignes.
// 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 la validation du nombre de lignes.
// 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