Evet CustomersList gelen DBases gelen seç sunucuadı'nın, Dbname tarafından elde ancak bunları açıkça tüm bahsetmek gerekir edebilirsiniz:
SELECT COl1,Col2,Col3 FROM Database1.schema.Table1
UNION ALL
SELECT COl1,Col2,Col3 FROM Database2.schema.Table1
UNION ALL
SELECT COl1,Col2,Col3 FROM Database3.schema.Table1
UNION ALL
.......
...
SELECT COl1,Col2,Col3 FROM Database200.schema.Table1
Bu, yalnızca Excel'de oluşturup SSMS'ye yapıştıracağım türden bir şey.
Daha sonra 200 veritabanında bu iyi bir tasarım olup olmadığını yeniden düşünmek isteyebilirsiniz. Bir saklı yordam kullanmak
DECLARE @tableName nvarchar(256) = 'Table1'
DECLARE @sql nvarchar(max) = ''
SELECT @sql = @sql + 'SELECT * FROM [' + dbs.name + ']..[' + @tableName + '] '
+ CASE WHEN @sql <> '' THEN 'UNION ALL ' ELSE '' END
FROM sys.sysdatabases dbs
WHERE dbs.name NOT IN ('master', 'tempdb', 'msdb', 'model')
EXEC(@sql)
Kolayca optimize edebilirsiniz:
teşekkür: Ben kodunuzu modifiye yüzden
İki veritabanlarında adres tablo var. Daha zarif bir yolu var mı? Bir ana tablo/veritabanı üzerinde veritabanının bir listesi var. – Bill
Zarif ile ne demek istediğine bağlı. @ ShA.t çözümü daha zarif mi? Sanmıyorum ama sen yapabilirsin! –