Création d'une vue à partir d'une requête sur plusieurs bases de données
Voici ma problématique :
J'ai plusieurs bases de données dans lesquelles on a une table de même nom et même structure.
Ex : mabase1,mabase2, mabase3, etc...
mabase1.table1 a 2 colonnes Col1 et Col2.
Je souhaite construire une vue à partir de cette liste de base de donnée pour regrouper les données des colonnes Col1 et Col2 des tables en questions.
pour obtenir le résultat suivant :
DbaseName;Col1;Col2
mabase1;Col1Value1;Col2Value1
mabase1;Col1Value2;Col2Value2
etc..
mabase2;Col1Value1;Col2Value1
mabase2;Col1Value2;Col2Value2
etc...
mabase3;Col1Value1;Col2Value1
mabase3;Col1Value2;Col2Value2
etc...
Pour cela , j'utilise :
_ une liste contenant le nom de mes bases
_ un curseur sur cette liste
_ une variable contenant ma requete SQL
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| DECLARE @base varchar(50);
DECLARE @sqlCommand VARCHAR(8000);
DECLARE curseur CURSOR FOR
select * from ( values
('HOLDING_TOYS'),
('TOYSMOTORS_TOURS'),
('SAGA_ANGERS') ) as mytab(mycol);
OPEN curseur;
FETCH NEXT from curseur into @base ;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sqlCommand = 'SELECT ''' + @base + ''' as DBaseMycol ,[CT_Num],[CT_intitule] from ['+@base+'].[dbo].[F_COMPTET]'
EXEC(@sqlCommand)
FETCH NEXT from curseur into @base;
END
CLOSE curseur
DEALLOCATE curseur |
Le code ci-dessous affiche bien un résultat à 3 colonnes comme souhaité mais je n'arrive pas à construire une view à partir de ce résultat dans SQL Managmt Studio en y copiant ce code ou par une requête de création de vue.
Avez-vous une idée pour ce faire ??
( l'utilisation d'un curseur n'est pas optimal mais je n'ai pas + de 150 bases, chacune 'ayant pas + de 50000 entrées par tables requêtées.)
merci bcp d'avance,