1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| DECLARE curDB CURSOR FOR
SELECT name
FROM sys.DATABASES
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb', 'ReportServer', 'ReportServerTempDB', 'Resource')
FOR READ ONLY
DECLARE @SQL VARCHAR(2048),
@nomBD SYSNAME,
@i TINYINT
SELECT @SQL = '', @i = 1
OPEN curDB
FETCH NEXT FROM curDB INTO @nomBD
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SQL = @SQL + CASE @i
WHEN 1 THEN 'SELECT * FROM(
SELECT mesColonnes FROM ' + @nomBD + '.dbo.maTable WHERE mesFiltres'
ELSE '
UNION ALL
SELECT mesColonnes FROM ' + @nomBD + '.dbo.maTable WHERE mesFiltres'
END
SET @i = @i + 1
FETCH NEXT FROM curDB INTO @nomBD
END
DEALLOCATE curDB
SET @SQL = @SQL + ') tab
WHERE (
CONDITION1 AND
CONDITION2 AND
CONDITION3)
PRINT @SQL
EXEC (@SQL) |