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

Comment synchroniser deux (ou n) processus de réplication pour les bases de données SQL Server ?

Il semble que cette tâche donnée ne puisse pas être résolue dans des contraintes données. Si j'ai bien compris, le nombre de bases de données et le schéma de la ligne sont des constantes.

Donc, variables qui restent :

  • "Injections" supplémentaires dans la base de données
  • Astuces temporelles
  • Déclencher des astuces
  • "Liaison tardive" des modifications, qui ne se sont pas reproduites à temps

Actuellement, je n'ai trouvé qu'une seule idée, qui semble fonctionner :

  1. Ajouter un déclencheur sur la table "Lignes", pour modifier l'horodatage de l'enregistrement "Commande" (last_line_time)
  2. Dans le réplica, attendez qu'une ligne avec le temps, égal à last_line_time apparaisse.
    • Si max(lines.line_time)> order.last_line_time alors la commande est obsolète
    • Si max(lines.line_time)
    • Si max(lines.line_time) ==order.last_line_time alors tout va bien, pour l'instant :)

Mais, ce cas peut échouer en boucle infinie, si les lignes sont constamment modifiées et que la réplique de la table des lignes est toujours à la traîne.