Exécuter la même requête dans SSMS sur plusieurs bases de données dans le même server

Il est possible dans SSMS d'exécuter la même requête sur certaines bases de données? Je pensais à quelque chose comme un tableau avec des noms de bases de données et en passant à travers, peut-être avec le mode SQLCMD.

un pseudo-code:

:setvar arr ["db1", "db2", "db3"] foreach $db in $arr :setvar database $db use $(database) go select * from table 

Merci

 -- To Achive your Desire OutpUt You Have to Use Dynamic Query -- you can Achieve this in TSQL -- TO Know The Database ID Run Below Query /* SELECT * FROM Sys.databases WHERE database_id >4 */ USE MASTER GO BEGIN TRAN DECLARE @strt INT,@End INT,@Database NVARCHAR(255) SELECT * INTO #T FROM Sys.databases WHERE database_id IN (4,5,6)-- Here you Have to Defined the Database ID ORDER BY 1 SELECT ROW_NUMBER ()OVER (ORDER BY database_Id)Db_Id,* INTO #TT FROM #T SET @strt=1 SELECT @End=Max(Db_ID)FROM #tt WHILE @strt<=@END BEGIN DECLARE @ssortingng NVARCHAR(MAX) SELECT @Database=NAME FROM #TT WHERE Db_ID=@strt Set @ssortingng=' Select * from '+@Database+'..Table_Name' SET @strt=@strt+1 PRINT @ssortingng EXEC(@ssortingng) END ROLLBACK TRAN 

Voici un exemple utilisant deux de mes bases de données (Staging et Warehouse) pour bash la table sys.columns dans chacun. Remplacez simplement le filter IN par les noms des bases de données que vous voulez, et les ".sys.columns" avec le nom de schéma / table dont vous avez besoin.

 DECLARE @query NVARCHAR(MAX) = '' ; SELECT @query += CONCAT('SELECT * FROM ',[name],'.sys.columns;') FROM sys.databases WHERE [name] IN ('Staging','Warehouse') ; EXEC sp_executesql @query;