2009-02-27 11 views
0

J'ai une base de données séparée pour chaque département. J'ai tous les depts liste dans une table de base de données master.Toutes les bases de données sont nommés comme a1, a2 etc Maintenant, je veux récupérer le détail des employés le département databses retourné par un query.pls me aiderMS Sql Server 2000: requête de base de données multiples

Répondre

4

quelque chose comme:

select <columnlist>, '[databasename1]' AS dbname 
    from [databasename1].[owner].[table or view name] 
UNION 
select <columnlist>, '[databasename2]' AS dbname 
    from [databasename2].[owner].[table or view name] 
UNION 
select <columnlist>, '[databasename3]' AS dbname 
    from [databasename3].[owner].[table or view name] 

Mise en œuvre:

DECLARE @DBTable TABLE (ID INT, DBName VARCHAR(20), DBOwner VARCHAR(10)) 
INSERT INTO @DBTable 
SELECT 1, 'a1', 'dbo' UNION 
SELECT 2, 'a2', 'dbo' UNION 
SELECT 3, 'a3', 'dbo' UNION 
SELECT 4, 'a5', 'dbo' 

DECLARE @Table VARCHAR(100), @Columns VARCHAR(500), @SQL VARCHAR(8000) 
SELECT @Table = 'Emloyee', @Columns = 'ID, Name, Phone', @SQL = '' 
SELECT @SQL = @SQL + ' 
SELECT '[email protected]+', '''+DBName+''' AS Database FROM ['+DBName+'].['+DBOwner+'].['[email protected]+'] UNION' 
FROM @DBTable 
SET @SQL = SUBSTRING(@SQL, 0, LEN(@SQL) - 5) 
EXEC(@SQL) 
1

Vous pouvez chercher des tables dans BDs comme ceci: -

SELECT * FROM a1..Employee 
UNION ALL 
SELECT * FROM a2..Employee 
Questions connexes