SQL Server - la synchronisation des 2 tables sur 2 bases de données différentes
J'ai 2 tables avec le même schéma sur 2 bases de données différentes sur le même serveur avec SQL Server 2008 R2.
Un tableau est mis à jour avec des données plus souvent.
Maintenant, il ya un besoin de garder ces 2 table dans la synchronisation. Cela peut arriver tous les soirs processus.
Quelle est la meilleure méthode pour réaliser la synchronisation. processus ?
OriginalL'auteur GilliVilla | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
À l'aide de l'opération de FUSION est votre meilleur pari. Vous pouvez contrôler chacune des conditions. QUAND a ÉGALÉ PUIS, QUAND INÉGALÉE PUIS etc.
FUSION - Technet
FUSION - MSDN (BON!)
Exemple: Transactionnelle de l'utilisation des Variables de Table - PAS de
Exemple B: Transactionnelle de l'utilisation Physique des Tables
Exemple C: Transactionnelle de l'utilisation de Tempdb (local & global)
Si vous utilisez des tables oui... Si vous utilisez de la mémoire ( @ tableaux de variables) alors non. J'ai édité la réponse à inclure une rapide démonstration de ce que vous demandez...
Gardez à l'esprit que l'opération de FUSION est une instruction atomique (qui est ce que vous voulez), mais il est implicite conditions de transaction, ms DTC peut être la chute si vous allez sur les serveurs. Les plans de requête peut également être un problème à la fois. C'est votre meilleure option, mais a des difficultés à la fois
Comment je peux faire cette action automatiquement après chaque modification de la table source?
vous pouvez utiliser la fonction Suivi des modifications.
OriginalL'auteur Mathew A.
Vous pouvez probablement utiliser sql server tablediff.exe utilitaire de ligne de commande. Il peut faire table par table, une comparaison entre les deux tableaux et de générer le sql automatiquement pour vous permettre de synchroniser la destination vers la source.
Il y a aussi une interface graphique wrapper autour d'elle http://code.google.com/p/sqltablediff/ ce qui rend la tâche encore plus facile. Il va générer de la ligne de commande pour vous.
Vous pouvez ensuite créer une tâche planifiée pour exécuter la ligne de commande, puis d'exécuter les scripts sql générés.
Cette deuxième solution... Nous avons constaté que l'exécution de tablediff.exe grâce à une chauve-souris de script appelé par l'Agent SQL Server a fait exactement ce qu'il nous fallait.
OriginalL'auteur java4script
Vous pouvez sélectionner à partir de différentes bases de données et l'utilisation d'un curseur à boucle les données sélectionnées. Au sein de ce curseur, vous pouvez faire un peu de logique et de mettre à jour ou de les supprimer de la table cible.
Également SQL 2008 a une belle nouvelle instruction MERGE que vous pouvez utiliser pour select/insert/update dans une requête T-SQL.
http://technet.microsoft.com/en-us/library/bb510625%28v=sql.105%29.aspx
Pour des processus plus complexes, j'ai utiliser la première option. Pour plus de droite avant de synchroniser des tâches-je utiliser la deuxième option.
Comme une option supplémentaire, il est également Server Integration Services (SSIS):
http://blogs.msdn.com/b/jorgepc/archive/2010/12/07/synchronize-two-tables-using-sql-server-integration-services-ssis-part-i-of-ii.aspx
OriginalL'auteur Tys