2010-07-15 7 views
0

Je suis après un peu de conseil sur la meilleure façon de procéder c'est SQL server 2008R2 express. J'ai un certain nombre d'applications qui sont dans des bases de données distinctes sur le même serveur. Ce sont tous des «plugins» qui utilisent une liste centrale de personnel/structure qui sera dans une base de données séparée. L'application est en cours de migration à partir de JET.Liaison de tables entre les bases de données

Ce que je suis à la recherche est la meilleure façon de toutes les bases de données « plugin » pouvoir voir la base de données centrale et utiliser ces tables dans les requêtes standard et vues etc.

Comme j'utilise expresse exclut toute solution de réplication et jusqu'à présent, la seule option à laquelle je peux penser est d'utiliser des déclencheurs ou une procédure stockée pour "repousser" toutes les modifications apportées aux plugins. Les informations doivent être remplies sur une base assez proche en temps réel, mais le nombre de changements sera très faible, peut-être jusqu'à 100 par jour et la plus grande table ne compte que 1000 lignes pour le moment (la table des noms des employés).

Espérons qui couvrira tous tout sauf si quelqu'un a besoin d'autres détails, puis il suffit de demander

Merci

Répondre

2

Toutes mes excuses si je l'ai mal compris, mais de votre description il semble que tous sont hébergés ces bases de données sur la même instance de SQL Server - c'est votre mention de la réplication qui me rend incertain. En supposant que c'est le cas, vous devriez pouvoir remplacer toutes les copies de tables de la base de données centrale qui sont contenues dans les bases de données "plugin" avec des vues ou des synonymes qui référencent directement les tables centrales, car SQL Server vous permet de faire références entre bases de données sur le même serveur utilisant le nommage en trois parties (nom_base_de_données.nom_schéma.nom_objet)

Par exemple, si chaque plugin db possède une table StaffNames, vous pouvez remplacer cette vue par une vue en supprimant la table, puis en créant une vue:

drop table StaffNames 
go 

create view StaffNames 
as 
select * from <centraldbname>.<schema - probably dbo>.StaffNames 
go 

et votre code devrait con continuer à fonctionner de manière transparente, tant que les autorisations sont définies. Vous pouvez également remplacer toutes les références aux tables partagées dans les bases de données de plug-in par des références de noms en trois parties à la base de données centrale, mais la méthode view nécessite moins de travail.

+1

Oui c'est exactement ça. Je suis tellement pris dans l'idée que chaque DB doit avoir sa propre copie des tableaux que j'ai complètement oublié. Je suis assez nouveau sur le serveur SQL et je ne savais pas que vous pouviez lier des tableaux comme celui-ci. Encore une fois, merci pour ton aide –

Questions connexes