2011-09-06 5 views
0

J'ai actuellement quatre serveurs différents, tous avec de nombreuses bases de données sur eux. Chaque serveur a entre 1 à 4 bases de données/tables dont j'ai besoin consolidé sur un serveur différent et mappé aux colonnes dans une table sur ce serveur.Comment manipuler des bases de données sur plusieurs serveurs SQL

À titre d'exemple, permet de dire qu'il était une base de données de l'utilisateur que je crée sur le serveur D. Le userId est dans une table dans un DB dans le serveur A, le userName est sur le serveur B, le dateUserStarted est sur le serveur C (I sais que c'est une configuration stupide, son juste par exemple)

Utilisation de SQL Server 2008 R2, comment puis-je faire cela? Je souhaitais également exécuter un script SQL Server Agent qui a mis à jour cette table de fusion.

Je l'ai regardé dans « serveurs liés » et ne peut pas sembler le faire fonctionner. Y a-t-il autre chose que je devrais utiliser?

+0

La réplication est le mot clé ici. –

+1

Qu'en est-il des serveurs liés ne fonctionne pas? – Chains

+2

Bien que je ne sois pas sûr de ce que "ne semble pas pouvoir le faire fonctionner" signifie, voir ma réponse ici http://stackoverflow.com/questions/498142/what-is-the-best-way-to-refresh-a-rollup-table -under-load pour une version de réplication manuelle-mais-moins-maintenance. Vous mettez cette procédure sur chaque serveur, programmez-la et remplacez par une requête du serveur lié source. Vous pouvez prendre seulement les tables/colonnes/lignes que vous voulez, et vous pouvez éviter l'exigence d'une colonne timestamp sur chaque table que vous voulez copier. –

Répondre

1

En fonction de la fréquence des lectures, la taille des données, et la bande passante entre les serveurs, vous pourriez être en mesure de sortir avec une solution qui est à distance rejoindre le plus facile à entretenir.

Créer une db et afficher sur le serveur D qui rejoindront les trois sources de données (userid, nomUtilisateur, dateUserStarted) des autres serveurs utilisant des serveurs liés. Par exemple, le serveur d aura trois objets serveur liés appelés serverA, serverB et ServerC.

Votre Voir ressemblera à quelque chose comme ça. (Je fais quelques hypothèses sur la clé primaire de la table distante étant "Id").

Create view vUserData 
as 
SELECT A.userId, B.userName,C.dateUserStarted FROM [serverA].[TheDataBaseName].[dbo].[TableWithUserId] A 
    join [serverB].[TheDataBaseName].[dbo].[TableWithUserName] B on A.userId=B.id 
    join [serverC].[TheDataBaseName].[dbo].[TableWithDateUserStarted] C on A.userId=C.id 
+0

Après avoir lié les serveurs avec l'interface graphique, cela a fonctionné, je dois avoir gâché les procédures stockées. Je fais votre solution de jointure, mais pas dans une vue. – DFTR

Questions connexes