我希望有人可以提供帮助。我有许多服务器,每个服务器上都有多个数据库。所有的数据库都有一个表,我想用一个非常简单的“select count(*) from section”来查询。我想将结果加上数据库名称全部整理在一起(即不是作为单独的查询结果,我无法通过快速单击复制出来)。所以结果如下:
**DB Name** **Number of Sections**
Name1 10
Name2 20
Name3 11
Name4 9
Name5 20
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有两个查询如下:
这个查询给了我一个结果列表作为一个查询,但是它没有给我结果相关的数据库名称,我无法确定如何添加它。
DECLARE @sql varchar(max);
SELECT @sql = Coalesce(@sql + ' UNION ALL ', '') + 'SELECT count(*) as ''Number of Sections'' FROM ' + QuoteName(name) + '.dbo.section'
FROM sys.databases
where database_id > 4
;
EXEC (@sql);
Run Code Online (Sandbox Code Playgroud)
此查询为我提供了我想要的确切结果,但它们都是单独的查询,因此我必须手动遍历并复制每个查询以整理结果。
DECLARE @command varchar(1000)
SELECT @command = 'IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'') BEGIN USE ? SELECT ''?'', COUNT(*) FROM section END'
EXEC …
Run Code Online (Sandbox Code Playgroud) sql-server ×1