小编use*_*149的帖子

所有数据库查询结果的联合还包括数据库名称

我希望有人可以提供帮助。我有许多服务器,每个服务器上都有多个数据库。所有的数据库都有一个表,我想用一个非常简单的“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

5
推荐指数
1
解决办法
4063
查看次数

标签 统计

sql-server ×1