Użyjmy rozwiązania kolegi Kidrahaa jako bazy.
DECLARE
@DBname SYSNAME,
@sql NVARCHAR(max)
CREATE TABLE wyniki (id bigint identity(1,1),
nazwa_bazy SYSNAME,
nazwa_tabeli SYSNAME)
DECLARE cDB CURSOR FAST_FORWARD READ_ONLY
FOR SELECT master.sys.databases.name FROM master.sys.databases
OPEN cDB
FETCH cDB INTO @DBname
WHILE @@Fetch_Status = 0
BEGIN
SET @sql = 'INSERT INTO wyniki(nazwa_bazy,nazwa_tabeli)
SELECT '''+@DBname+''', t.name FROM ['+@DBname+'].sys.tables t'
EXEC (@sql)
FETCH cDB INTO @DBname
END
CLOSE cDB
DEALLOCATE cDB
select * from wyniki
Nie mam bazy konfiguracyjnej wiec biorę wszystkie.
Czyli:
Jak z tej pętelki zrobić UNION tak by wyniki zostały zwrócone do jednej tabeli?
Nie robić kolejne wywołanie dopisuje
W jaki sposób wstawić nazwę bazy jako kolumnę tabeli?
Jako kawałek dynamicznego stringu.