Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Configuration de la réplication transactionnelle SQL Server

La réplication transactionnelle dans SQL Server est l'une des techniques de réplication les plus couramment utilisées pour copier ou distribuer des données sur plusieurs destinations. Dans les articles précédents, nous avons discuté de la réplication SQL Server et du fonctionnement interne de la réplication. Notre objectif est maintenant de voir comment configurer la réplication transactionnelle dans SQL Server à l'aide de l'approche de sauvegarde et comment ajouter ou supprimer correctement des articles à la réplication. Sans mesures appropriées, nous risquons d'invalider l'instantané et de devoir reconfigurer la réplication.

Administration de la réplication transactionnelle

Dans mes articles précédents, nous avons suivi les instructions étape par étape concernant les éléments ci-dessous :

  • Configurer la distribution
  • Configurer la publication avec l'option d'instantané
  • Configurer l'abonnement avec l'option d'instantané

Lors de la configuration de la réplication, nous avons d'abord configuré le distributeur. Ensuite, nous avons procédé à la création d'une publication et d'un abonnement. Pour supprimer ou nettoyer la réplication, nous devons effectuer le processus inverse. Tout d'abord, nous devons supprimer l'abonnement, puis la publication et, enfin, supprimer le distributeur ou la base de données de distribution.

Dans cet article, nous essayons de supprimer la réplication transactionnelle dans SQL Server que nous avons précédemment configurée. Nous utiliserons l'approche de sauvegarde et ajouterons ou supprimerons des articles de la réplication de la manière suivante :

  • Annuler l'abonnement
  • Abandonner la publication
  • Drop Distributor ou base de données de distribution
  • Nettoyez complètement la réplication si l'une des étapes ci-dessus ne fonctionne pas correctement
  • Configurer la réplication avec la sauvegarde de la base de données
  • Supprimer des articles de la réplication en utilisant à la fois l'approche Assistant et T-SQL
  • Ajouter de nouveaux articles à la réplication en utilisant à la fois l'approche Assistant et T-SQL
  • Ajouter un article de procédure stockée et étudier la différence entre l'article Table et l'article de procédure stockée

Annuler l'abonnement

Pour supprimer toute réplication configurée, nous devons d'abord supprimer l'abonnement.

Dans SSMS, connectez-vous à l'instance Publisher> Réplication > Publications locales . Faites un clic droit sur l'abonnement> Supprimer ou Déposez Abonnement :

SQL Server vous demandera de confirmer votre action :

Cliquez sur Oui pour supprimer l'abonnement. Cela supprimera complètement l'abonnement.

Dans ma configuration actuelle, l'éditeur et l'abonné sont sur la même instance. Par conséquent, aucune demande n'a été envoyée pour se connecter à l'instance de l'Abonné pour validation. Au cas où nous l'aurions sur une instance différente de SQL Server, il demanderait de se connecter à l'instance de l'abonné pour valider avant de supprimer l'abonné.

Dropping Publication utilise en interne sp_droppublication procédure et nous pouvons utiliser cette procédure pour supprimer manuellement la publication via l'approche T-SQL

Abandonner la publication

Une fois l'abonnement supprimé, nous pouvons continuer et supprimer la Publication . Faites un clic droit sur AdventureWorks_Pub et sélectionnez Supprimer depuis le menu :

Vous verrez un message vous demandant de confirmer cette action. Notez que vous allez supprimer la publication. Cependant, tous les enregistrements qui ont été répliqués dans la base de données de l'Abonné ne seront pas supprimés. Nous devrons supprimer la base de données manuellement pour nettoyer ces enregistrements répliqués. Cliquez sur Oui .

La suppression d'une publication applique en interne la sp_droppublication procédure.

Déposez le distributeur ou la base de données de distribution

Nous avons mentionné précédemment que la base de données de distribution est une base de données système. Par conséquent, nous ne pouvons pas le supprimer en cliquant avec le bouton droit sur la base de données et en sélectionnant l'option de suppression comme avec les bases de données utilisateur. Si nous faisons un clic droit sur la base de données de distribution, nous n'obtenons que les options ci-dessous :

Lorsque nous devons supprimer la base de données de distribution, nous devons d'abord cliquer avec le bouton droit sur Réplication nœud> Désactiver Édition et distribution .

Cela ouvrira l'assistant.

Par défaut, la deuxième option (Non, continuer à utiliser ce serveur en tant qu'éditeur ) est sélectionné pour éviter de déposer accidentellement toutes les publications sur le serveur.

Dans notre cas, nous n'avons qu'une seule publication, et nous aimerions faire le ménage. Par conséquent, nous sélectionnons la première option - Oui, désactiver la publication sur ce serveur . Il supprimera toutes les publications ainsi que les abonnements s'ils ne sont pas déjà supprimés et désactivera le distributeur.

Nous pouvons utiliser cet assistant lui-même pour tout nettoyer si notre serveur n'a qu'une seule réplication configurée. Cependant, si plusieurs réplications sont configurées, nous abandonnons la réplication transactionnelle dans SQL Server en suivant les étapes standard partagées ci-dessus.

Maintenant, nous devons sélectionner la première option Oui, désactiver la publication sur ce serveur , puis cliquez sur Suivant .

Dans la nouvelle fenêtre, cochez les deux options :Désactiver la publication et la distribution et Générer un fichier de script avec les étapes…

Pour générer le fichier de script, vous devrez fournir le chemin où le stocker.

Cliquez sur Suivant et afficher les options sélectionnées dans l'assistant. Vérifiez et assurez-vous que vous avez tout sélectionné correctement.

Cliquez sur Terminer .

La suppression de la base de données de distribution en interne utilise le sp_dropdistributor procédure.

Une fois le distributeur désactivé, nous pouvons voir que la base de données de distribution est supprimée des bases de données système.

Nettoyez complètement la réplication si l'une des étapes ci-dessus ne fonctionne pas correctement

Si l'abonnement ou la publication est supprimé via d'autres approches, nous aboutissons à une suppression incohérente de la réplication transactionnelle dans SQL Server et obtenons de nombreuses erreurs. Pour nettoyer tous les résidus d'abonnement ou de publication, nous pouvons utiliser la procédure système sp_removedbreplication .

exec_spremovedbreplication

Exécutez cette procédure uniquement s'il existe encore des problèmes de réplication après avoir essayé toutes les autres approches mentionnées. Procédure stockée sp_removedbreplication doit être exécuté sur la base de données de l'éditeur ou à partir de la base de données principale et en utilisant la commande ci-dessous après avoir remplacé le @dbname par le nom de la base de données de l'éditeur.

exec_spremovedbreplication @dbname

Configurer la réplication à l'aide de l'approche de sauvegarde

Après avoir complètement supprimé la réplication, reconfigurons la réplication transactionnelle dans SQL Server à l'aide de l'approche de sauvegarde. Cela implique les étapes ci-dessous :

  • Configurer le distributeur
  • Créer la publication
  • Modifiez les propriétés de la publication pour permettre la création d'un abonnement à partir de la sauvegarde complète ou différentielle.
  • Effectuez une sauvegarde complète de l'éditeur et restaurez-le en tant qu'abonné.
  • Configurez l'abonnement et lancez l'initialisation à partir de la sauvegarde.

Nous avons déjà effectué la plupart des étapes précédemment lors de la configuration de la réplication. Par conséquent, nous n'entrerons pas dans les détails de ces étapes ici.

Configurer le distributeur et la publication

Reportez-vous aux instructions pas à pas de l'article précédent pour savoir comment configurer la distribution et la publication à l'aide de l'assistant Créer une publication. Pour apprendre les scripts T-SQL utilisés par l'assistant pour créer la distribution et la publication, générez simplement les scripts dans un fichier lors de la dernière étape de l'assistant et n'exécutez pas les scripts en décochant l'option "Créer la publication" comme indiqué ci-dessous .

Ouvrez maintenant le fichier de script enregistré dans une nouvelle fenêtre de requête pour créer le distributeur et la publication à l'aide de ces scripts :

Veuillez noter la deuxième ligne commentée - elle indique que toutes les valeurs de mot de passe que nous avons entrées dans l'assistant ont été converties en chaîne NULL ou vide pour des raisons de sécurité. Regardez la ligne en surbrillance avec @password =valeurs vides. Remplacez-le par les valeurs de mot de passe correctes, faites de même pour les autres sections avec des mots de passe et exécutez le script.

Le script a été exécuté avec succès. Nous pouvons voir que l'exécution des scripts a créé la base de données de distribution et toutes les tables système qu'elle contient. À la fin du message, nous pouvons voir que le travail de l'agent de lecture du journal a également été créé et lancé.

Si nécessaire, vous pouvez stocker les résultats pour en savoir plus sur toutes les tables, vues et procédures critiques de la base de données de distribution. Ces informations seront utiles pour un dépannage ultérieur.

Après l'exécution réussie des scripts, nous pouvons voir la base de données de distribution et la publication créée avec succès.

Modifier les propriétés de la publication pour permettre la création d'un abonnement à partir d'une sauvegarde complète ou différentielle

Si la taille de la base de données est très petite, le temps nécessaire pour envoyer l'instantané initial sera plus rapide.

En revanche, la création de réplication transactionnelle dans SQL Server à l'aide de Snapshot n'est pas efficace dans les cas suivants :

  1. Si la base de données est énorme (300 Go ou plus). Le temps nécessaire pour envoyer l'instantané initial sera trop long.
  2. Si l'Abonné se trouve à différents endroits avec une faible bande passante réseau. Ensuite, le processus d'instantané initial se déroulera pendant plusieurs jours.

Ainsi, effectuer une sauvegarde complète, la transférer via FTP ou physiquement vers l'autre emplacement, restaurer cette sauvegarde et initialiser l'abonné sera beaucoup plus rapide par rapport à l'approche Snapshot.

Pour permettre à la publication de prendre en charge l'initialisation à partir des sauvegardes, nous devons modifier l'une des propriétés de la publication. Cela peut être fait via SSMS ou T-SQL.

Approche SSMS

Faites un clic droit sur AdventureWorks_pub publication et choisissez Propriétés :

Cliquez sur Options d'abonnement :

Définir Vrai pour Autoriser l'initialisation à partir des fichiers de sauvegarde et cliquez sur OK . Cela nous permettra d'initialiser à la fois la sauvegarde complète et la sauvegarde différentielle.

Approche T-SQL

En T-SQL, nous pouvons appeler la procédure sp_changepublication pour modifier cette propriété.

Le script pour modifier cette propriété est ci-dessous :

USE AdventureWorks
GO
exec sp_changepublication @publication = 'AdventureWorks_pub', @property = 'allow_initialize_from_backup', @value = 'true'

Effectuez une sauvegarde complète de l'éditeur et restaurez-le en tant qu'abonné

Un facteur clé pour remarquer que nous devons effectuer une sauvegarde complète après avoir implémenté la propriété de publication ci-dessus. Si la taille de la base de données est énorme, nous pouvons effectuer une sauvegarde complète et la restaurer en mode RÉCUPÉRATION dans l'instance de l'abonné, et effectuer une sauvegarde différentielle après avoir modifié la configuration ci-dessus et la restaurer dans la base de données de l'abonné avec le mode NORECOVERY.

Configurer l'abonnement et démarrer l'initialisation à partir de la sauvegarde

Encore une fois, reportez-vous aux instructions étape par étape. Nous devons générer les scripts nécessaires mais ne les exécutons pas. Le fait est que nous allons Initialiser l'abonnement à partir d'une sauvegarde complète ou différentielle à l'aide de scripts T-SQL uniquement. J'ai créé ces scripts lors de la création de l'abonnement la dernière fois. Voir le fichier ouvert ci-dessous.

Remarque :Les scripts de création d'abonnement doivent être exécutés depuis la base de données de l'éditeur. Par conséquent, ouvrez la fenêtre de requête se connectant à l'instance Publisher.

Nous devons apporter quelques modifications pour que l'abonnement s'initialise à partir de la sauvegarde :

  • Modifier le @sync_type valeur de automatique pour initialiser avec sauvegarde
  • Fournissez les mots de passe corrects pour ceux remplacés par des chaînes NULL ou vides. Depuis que j'ai utilisé le compte de service d'agent sur le serveur, je n'ai pas besoin de changer de mot de passe.
  • Ajouter les paramètres @backupdevicetype et @backupdevicename et indiquez le chemin d'accès à la sauvegarde complète ou différentielle sur le serveur de publication (le script sera exécuté dessus).

Une fois terminé, notre script ressemblera à ceci :

Exécutez le script pour terminer la configuration de l'abonnement et nous recevrons l'achèvement réussi du script comme indiqué ci-dessous.

Comme l'indique le statut, le travail de l'agent de distribution SQL Server Agent a été créé et lancé lors de la création de l'abonnement.

Ainsi, nous avons créé notre réplication avec succès en utilisant l'approche de sauvegarde. Nous pouvons maintenant vérifier l'abonnement disponible.

Lancez le moniteur de réplication et cliquez avec le bouton droit sur l'abonné. Il affichera l'état de la réplication :

Comme nous pouvons le voir, toutes les données ont été initialisées avec succès à partir de la sauvegarde sans qu'il soit nécessaire d'exécuter le travail de l'agent d'instantané. Puisqu'il n'y a pas de transactions actives sur la base de données, nous obtenons le message "Aucune transaction répliquée n'est disponible" dans le moniteur de réplication pour le moment.

Supprimer des articles de la réplication

Après avoir appris à configurer la réplication transactionnelle dans SQL Server via l'assistant de réplication ou les scripts T-SQL, nous pouvons maintenant vérifier comment supprimer un article de la réplication via ces deux méthodes.

Utiliser l'assistant

Faites un clic droit sur AdventureWorks_pub Publications> Propriétés . Cliquez sur Article pour afficher la liste des articles inclus dans la réplication.

Par défaut, il listera les objets de la base de données au format OBJECT_NAME (SCHEMA_NAME). À des fins de test, supprimons la table Person.ContactType de la réplication.

Pour cela, décochez simplement la case devant ContactType (Personne). SQL Server affichera le message d'avertissement ou de confirmation :

Comme il l'explique, s'il existe des instantanés actuellement disponibles, cela invalidera ces instantanés en raison des modifications apportées aux articles.

Étant donné que nous avons initialisé en utilisant l'approche de sauvegarde et que nous n'avons pas utilisé d'instantanés, nous pouvons ignorer ce message en toute sécurité et cliquer sur Oui pour supprimer cette table Article de la réplication. Cliquez sur OK pour terminer la suppression de l'article de la réplication.

Maintenant le Person.ContactType table est supprimée de la réplication. Toute modification apportée à l'éditeur ne sera pas envoyée à la base de données de l'abonné. Nous pouvons tester cela en INSERT/UPDATE/DELETE enregistrements sur Person.ContactType tableau.

Utiliser T-SQL

Une autre façon est de déposer un article de la réplication à l'aide de sp_droparticle procédure.

USE [AdventureWorks]
GO
EXEC sp_droparticle 
  @publication = N'AdventureWorks_pub', 
  @article = N'ContactType',
  @force_invalidate_snapshot = 1;
GO

Ajouter de nouveaux articles à la réplication via l'assistant ou l'approche TSQL

Dans certains cas (comme la maintenance des tables), nous devrons peut-être supprimer quelques articles et les ajouter à la réplication une fois la maintenance terminée.

Nous avons appris avec succès comment supprimer des articles de la réplication. Voyons comment ajouter de nouveaux articles à la réplication. Nous ajouterons le Person.ContactType tableau que nous avons supprimé plus tôt dans la réplication.

Utilisation de l'assistant

Pour rajouter un article de table à la réplication, cliquez avec le bouton droit sur Publication > Propriétés > Articles . Il affichera la liste des articles disponibles dans la publication.

Nous n'avons pas pu trouver le Person.ContactType table – l'écran affiche uniquement les tables qui faisaient partie de la réplication. Pour voir tous les tableaux disponibles dans la base de données de l'éditeur, décochez Afficher uniquement les articles sélectionnés dans la liste pour afficher tous les tableaux.

Maintenant, nous pouvons voir le Person.ContactType table répertoriée.

Comme nous en avons discuté précédemment, toutes les tables sans clés primaires auront un cercle rouge icône qui indique que ces tables ne peuvent pas être incluses dans la réplication via l'assistant ou l'approche T-SQL.

Vérifiez le ContactType (Personne) table pour l'ajouter à nouveau à la réplication et cliquez sur OK .

La table est à nouveau ajoutée à la réplication. Cependant, nous devons trouver une méthode pour envoyer l'instantané initial pour cet article de table nouvellement ajouté.

Si vous avez lu l'article jusqu'à présent, vous l'auriez deviné :il vous suffit d'exécuter le travail de l'agent d'instantané pour envoyer l'instantané initial de cette table.

Faisons-le maintenant - faites un clic droit sur Publication > afficher l'Agent d'instantané statut.

Cliquez sur Démarrer pour envoyer l'instantané des articles éligibles. Envoyez ces données à la base de données de distribution et, enfin, à la base de données des abonnés.

Approche T-SQL

Nous pouvons effectuer les actions similaires en utilisant le sp_addarticle procédure.

Le script ci-dessous ajoutera des articles à la réplication.

use [AdventureWorks]
GO
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'ContactType', @source_owner = N'Person', @source_object = N'ContactType'
, @type = N'logbased', @description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509F
, @identityrangemanagementoption = N'manual', @destination_table = N'ContactType', @destination_owner = N'Person', @vertical_partition = N'false'
, @ins_cmd = N'CALL sp_MSins_PersonContactType'
, @del_cmd = N'CALL sp_MSdel_PersonContactType'
, @upd_cmd = N'SCALL sp_MSupd_PersonContactType'
GO

Nous avons vu précédemment le fonctionnement de la réplication pour un article de table en appliquant 3 procédures créées dans la base Abonné pour gérer les opérations INSERT/UPDATE et DELETE.

En utilisant l'approche T-SQL, nous savons comment ces procédures sont référencées. Si nécessaire, nous pouvons renommer les objets, les noms des tables de destination ou les procédures par défaut. Pour cela, nous apporterons des modifications au sp_addarticle procédure.

REMARQUE :Si nous apportons des modifications à la réplication, nous devons toutes les documenter correctement. Sinon, cela pourrait conduire à un désastre plus tard.

Ajouter un article de procédure stockée et étudier la différence entre un article de table et un article de procédure stockée

Pour ajouter une procédure stockée à la réplication, nous devons aller dans les articles page et vérifiez la procédure stockée requise pour la répliquer. Nous pouvons faire de même pour les Vues , Vues indexées , ou Fonctions définies par l'utilisateur aussi.

Pour en savoir plus sur la différence entre les articles de table et les vues/procédure stockée/vues indexées/fonctions définies par l'utilisateur, nous pouvons ajouter un article de chaque article pour chaque catégorie à l'aide de T-SQL :

Ajout d'un nouvel article de procédure stockée à la réplication

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'uspGetBillOfMaterials', @source_owner = N'dbo'
, @source_object = N'uspGetBillOfMaterials', @type = N'proc schema only', @description = null, @creation_script = null
, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @force_invalidate_snapshot = 1
, @destination_table = N'uspGetBillOfMaterials', @destination_owner = N'dbo'

Ajout d'un nouvel article de vue à la réplication

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'vVendorWithContacts', @source_owner = N'Purchasing'
, @source_object = N'vVendorWithContacts', @type = N'view schema only', @description = null, @creation_script = null, @pre_creation_cmd = N'drop'
, @schema_option = 0x0000000008000001, @destination_table = N'vVendorWithContacts', @destination_owner = N'Purchasing'
GO

Ajout d'un nouvel article de vue indexée à la réplication

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'vStateProvinceCountryRegion', @source_owner = N'Person'
, @source_object = N'vStateProvinceCountryRegion', @type = N'indexed view schema only', @description = null, @creation_script = null
, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @force_invalidate_snapshot = 1
, @destination_table = N'vStateProvinceCountryRegion', @destination_owner = N'Person'

Ajout d'un nouvel article sur la fonction définie par l'utilisateur à la réplication

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'ufnGetStock', @source_owner = N'dbo', @source_object = N'ufnGetStock'
, @type = N'func schema only', @description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001
, @force_invalidate_snapshot = 1, @destination_table = N'ufnGetStock', @destination_owner = N'dbo'

Nous utilisons le sp_addarticle procédure pour ajouter n'importe quel type d'article à la réplication avec les paramètres d'entrée nécessaires et les options modifiant le @type inclus paramètre.

Nous pouvons également ajouter ces articles à la publication en cliquant avec le bouton droit de la souris sur Publication > Propriétés > Articles et de les ajouter à la Publication.

Propriétés de l'article de tableau

Maintenant, changeons les propriétés de l'article via les articles menu dans le Publication propriétés :

Cliquez sur notre Person.ContactType préféré tableau > Propriétés de l'article . Il y aura une option pour soit modifier les propriétés de l'article pour cette table uniquement ou pour toutes les tables incluses dans la réplication. Pour un test, nous sélectionnons Définir les propriétés de l'article du tableau en surbrillance pour afficher les propriétés de Person.ContactType tableau.

Voir toutes les options disponibles pour ce tableau Article :

Copier les objets et les paramètres sur l'abonné et Livraison des relevés sont les paramètres les plus importants pour la réplication. Nous devons être très prudents avant de modifier l'un de ces paramètres.

Cliquez sur le format de livraison INSERT\UPDATE\DELETE pour obtenir les options ci-dessous.

  • Ne pas répliquer les instructions INSERT\UPDATE\DELETE - pour personnaliser la réplication afin de ne pas envoyer de commandes spécifiques à la base de données de l'abonné
  • Instruction INSERT\UPDATE\DELETE - pour envoyer l'instruction INSERT\UPDATE\DELETE directement à l'abonné au lieu de reconstruire les données à partir des journaux transactionnels
  • CALL – Exécute la procédure stockée intégrée présentée ci-dessus dans sp_addarticle pour répliquer les données.
  • XCALL – Exécute la procédure stockée étendue pour répliquer les modifications.

Propriétés de l'article de procédure stockée

Cliquez sur Propriétés de l'article sur l'une des procédures stockées pour afficher les propriétés

L'une des propriétés clés de la procédure stockée est l'option Répliquer – voir les options disponibles ci-dessous :

  • Définition de procédure stockée uniquement – réplique uniquement les modifications de la structure DDL de la procédure stockée. Il s'agit de l'option par défaut pour toute procédure stockée.
  • Exécution de la procédure stockée – utilisez cette option pour réduire la charge de réplication. Il effectue toutes les modifications via l'exécution de la procédure stockée sur l'abonné sans envoyer de commandes individuelles. Nous pouvons voir à propos de cette fonctionnalité pour résoudre les problèmes de performances tout en reproduisant d'énormes changements de données dans mon prochain article.
  • Exécution dans une transaction sérialisée du SP – une option hybride pour choisir Exécution de procédure stockée uniquement si la procédure est exécutée dans une transaction sérialisée. Sinon, il serait répliqué en tant que commandes DML individuelles.

Afficher les propriétés de l'article

Cliquez sur Propriétés de l'article pour n'importe quelle vue pour obtenir les propriétés :

Propriétés de l'article de la vue indexée

Cliquez sur Propriétés de l'article pour l'une des vues indexées pour les propriétés :

Propriétés d'article de fonction définies par l'utilisateur

Cliquez sur Propriétés de l'article sur toute fonction définie par l'utilisateur pour ses propriétés

Les propriétés des vues, des vues indexées et des fonctions définies par l'utilisateur sont à peu près les mêmes. Par conséquent, nous ne pouvons pas les personnaliser beaucoup.

Conclusion

Merci d'avoir parcouru un autre article puissant lié à la réplication. Aujourd'hui, nous avons clarifié les détails de l'abandon de l'abonnement, de la publication, de la base de données de distribution et du nettoyage complet de la réplication même si nous rencontrons des problèmes.

Nous avons configuré une réplication nouvellement initialisée à partir de la sauvegarde et testé comment ajouter de nouveaux articles à la réplication ou les en supprimer. En travaillant plus loin avec des bases de données et, en particulier, en trouvant les écarts entre elles, vous bénéficierez grandement des outils professionnels. Le dbForge Compare Bundle pour SQL Server identifie et analyse toutes ces différences et les signale.

Dans notre prochain article, nous examinerons les problèmes de réplication fréquemment rencontrés et comment les résoudre de manière professionnelle.