web-dev-qa-db-fra.com

Comment synchroniser des bases de données sur différents serveurs dans SQL Server 2008?

J'ai 2 bases de données qui ont la même structure, une sur une machine locale et une sur le serveur de l'entreprise. Chaque fois que vous définissez une durée déterminée, les données du DB local doivent être synchronisées avec le DB du serveur.

J'ai une idée générale sur la façon de procéder. Créez un script qui "fusionne" en quelque sorte les informations qui ne figurent pas sur la base de données du serveur, puis faites-le exécuter en tant que travail planifié pour le serveur. Cependant, mon problème réside dans le fait que je ne suis pas très expérimenté dans ce domaine.

SQL Server Management Studio offre-t-il un moyen simple de le faire (un type d’assistant) et génère ce type de script? Est-ce quelque chose que je devrai construire à partir de zéro?

J'ai effectué quelques recherches de base sur Google et suis tombé sur le terme "réplication" mais je ne le comprends pas bien. Je préférerais entendre les commentaires de personnes qui ont réellement fait cela ou qui savent bien expliquer ce genre de choses.

Merci.

20
Eton B.

La réplication semble être une bonne option pour cela, mais il y aurait des frais généraux (pas des frais techniques, mais la connaissance doit les supporter).

Une autre option de SQL Server est SSIS. SSIS fournit des outils graphiques pour concevoir ce que vous essayez de faire. Le package SSIS peut également exécuter des instructions SQL, le cas échéant. Un package SSIS peut être démarré et donc planifié à partir d'un travail SQL Server.

Vous devez tenir compte de la complexité des règles de synchronisation lors du choix de votre solution. Par exemple, serait-il difficile de résoudre des conflits, tels qu'une clé en double, lors de la fusion des données. Un script SQL peut être facile à créer si les règles sont simples. Cependant, les règles de conflit complexes peuvent être plus difficiles à implémenter dans un script (ou une réplication).

12
bobs

SQL Server Management Studio n'offre malheureusement pas grand chose de cette manière.

Vous devriez jeter un regard sérieux sur certaines des excellentes offres commerciales disponibles:

Ils coûtent tous de l'argent - mais si vous êtes sérieux à ce sujet et que vous les utilisez dans votre routine quotidienne, ils sont payés très rapidement - ils valent bien chaque centime.

La seule option "libre" dont vous disposez dans SQL Server 2008 consisterait à créer un lien entre les deux serveurs, puis à utiliser quelque chose comme l’instruction instruction MERGE (nouvelle dans SQL Server 2008) pour transférer les données. Cela ne fonctionne pas pour les changements structurels et se limite à une connexion en direct entre les deux serveurs.

8
marc_s

Vous devez absolument lire sur la réplication transactionnelle. Cela semble bien correspondre à la situation que vous avez décrite. Voici quelques liens pour vous aider à démarrer.

5
Joe Stefanelli

Ce que vous voulez, c'est Réplication transactionnelle d'égal à égal , qui permet aux données d'être mises à jour dans les deux bases de données tout en les maintenant synchronisées par le biais d'une fusion contiguë de modifications. Ceci correspond parfaitement à ce que vous voulez, mais c'est une option assez coûteuse (requiert Enterprise Edition sur les deux sites). Une autre option est Réplication transactionnelle bidirectionnelle , mais comme cela nécessite également deux licences EE, je dis qu’il est plus facile de déployer un système homologue à homologue pour le même coût.

Une option plus économique est Abonnements pouvant être mis à jour pour la réplication transactionnelle , mais les abonnements pouvant être mis à jour sont obsolètes et vous miseriez votre argent sur un cheval perdant.

Une autre option consiste à utiliser Fusionner la réplication . Enfin, dans les cas où la base de données "locale" est assez mobile, il existe Sync Framework .

Notez que all, ces options nécessitent une configuration et une coopération de la base de données serveur de la société. 

4
Remus Rusanu

Il existe d'excellents outils tiers. Pour moi, xSQL Data Compare a toujours fait l'affaire. Et comme les comparaisons sont hautement modifiables, il convient à presque tous les scénarios de comparaison ou de synchronisation des données. J'espère que cela t'aides!

0
Endi Zhupani