J'ai un certain nombre de bases de données connexes qui sont en version éd. L'instance de différentes versions peut fonctionner côte à côte, identifiée par leurs différentes versions, c'est-à-dire [NORHWINDV1.1] et [NORHWINDV1.2] peut être sur le même serveur, ainsi que [Southwindv1.1] et [Southwindv1.2]. p>
Il existe un certain nombre de procédures stockées qui font des requêtes de base de données croisées, c'est-à-dire sur Northwindv1.1 et également des tables de requête dans SouthWindv1.1. Quelle est la meilleure façon de gérer la modification des noms de base de données avec le changement de numéro de version, de sorte que les procédures stockées interrogent la version correcte des bases de données? P>
Merci, magicandi. P>
3 Réponses :
Il n'y a que deux façons que je connaisse, et les deux un peu sucent. Le premier consiste à utiliser SQL dynamique, comme: la seconde consiste à installer plusieurs instances si SQL Server sur une machine. Comme localhost \ v1.0 code>,
localhost \ v1.1 code>, et ainsi de suite. Vous pouvez ensuite créer un serveur lié que vous interrogez comme suit: P>
select * from linkedserver.northwind.dbo.YourTable
Merci Andomar, je n'avais pas envisagé d'installer plusieurs instances de SQL Server. +1.
En supposant que le nombre de tables interrogées entre les bases de données soit gérable, vous pouvez créer des synonymes pour ces tableaux et utiliser le synonyme dans les procédures. Vous auriez alors juste juste besoin de changer les synonymes pour basculer entre les versions. P>
Vous pouvez créer des vues dans chaque base de données pour les autres tables nécessaires. Le Proc stocké ferait référence aux points de vue et les points de vue indiqueraient à la "bonne" base de données. P>
Vous pouvez probablement créer une simple base de PROC stockée TSQL pour générer les points de vue quand ils doivent être basculés vers une nouvelle base de données. P>