SQL查询,想查询服务器上的所有数据库,然后数据库对应表的数量。

时间:2021-02-25 08:30:41
如题:
大概这样的格式
数据库名称   表数量
dome1          100
dome2          200

8 个解决方案

#1



--查看所有数据库:
select  name from sys.databases
--查看当前数据库的所有表的名字
select name from sysobjects where xtype='U' and category=0  

#2


DECLARE @T TABLE(DBName sysname,TabCount int)
INSERT @T EXEC sp_msforeachdb 'select ''?'',count(*)  FROM ?.sys.tables WHERE type=''U'''

SELECT * FROM @T

#3



--查看当前数据库的所有表
declare @str varchar(max)
set @str=''
select @str=@str+' use '+name+
' select '+quotename(name,'''')+' as databasename,COUNT(name) as [count] 
from sysobjects where xtype=''U'' and category=0'
from (select  name from sys.databases)a
print @str
exec(@str)
--本机测试结果
databasename count
master 124
databasename count
tempdb 6
databasename count
model 0
databasename count
msdb 17

#4


引用 2 楼  的回复:
SQL code

DECLARE @T TABLE(DBName sysname,TabCount int)
INSERT @T EXEC sp_msforeachdb 'select ''?'',count(*)  FROM ?.sys.tables WHERE type=''U'''

SELECT * FROM @T

#5


select count(name) tablenum from ysbi.dbo.sysobjects where type ='U' 这个是查库里所有的表的。


select d.name from master.dbo.sysdatabases d,master.dbo.ESP_INIT_LOG l where d.name = l.DATABASE_NAME  这个是查服务器所有的表的,怎么把这两个sql合成一个呢。

#6


引用 5 楼  的回复:
select count(name) tablenum from ysbi.dbo.sysobjects where type ='U' 这个是查库里所有的表的。


select d.name from master.dbo.sysdatabases d,master.dbo.ESP_INIT_LOG l where d.name = l.DATABASE_NAME  这个是查服务器所有……





select 
d.name ,a.tablenum
from master.dbo.sysdatabases d,
master.dbo.ESP_INIT_LOG l , 
(select count(name) tablenum from ysbi.dbo.sysobjects  AS a where type ='U' )  AS a
where d.name = l.DATABASE_NAME 

#7


引用 6 楼  的回复:
引用 5 楼 的回复:

select count(name) tablenum from ysbi.dbo.sysobjects where type ='U' 这个是查库里所有的表的。


select d.name from master.dbo.sysdatabases d,master.dbo.ESP_INIT_LOG l where d.name = l.DATABASE_N……


查出来的效果 是这样的。
bkysbase 58
carbase 58
jlyszzx 58
master 58
xjysbase 58
ysbase1 58
ysbase2 58
ysbi 58
Wang 58
carbase 58
master 58
cwbase80 58
cwbase3 58
mydb 58
ysbi 58

#8


sp_msforeachdb 'print ''?'' exec(''select ''''?'''',count(*) as [表数] from ?.sys.objects where type=''''U'''''')'

#1



--查看所有数据库:
select  name from sys.databases
--查看当前数据库的所有表的名字
select name from sysobjects where xtype='U' and category=0  

#2


DECLARE @T TABLE(DBName sysname,TabCount int)
INSERT @T EXEC sp_msforeachdb 'select ''?'',count(*)  FROM ?.sys.tables WHERE type=''U'''

SELECT * FROM @T

#3



--查看当前数据库的所有表
declare @str varchar(max)
set @str=''
select @str=@str+' use '+name+
' select '+quotename(name,'''')+' as databasename,COUNT(name) as [count] 
from sysobjects where xtype=''U'' and category=0'
from (select  name from sys.databases)a
print @str
exec(@str)
--本机测试结果
databasename count
master 124
databasename count
tempdb 6
databasename count
model 0
databasename count
msdb 17

#4


引用 2 楼  的回复:
SQL code

DECLARE @T TABLE(DBName sysname,TabCount int)
INSERT @T EXEC sp_msforeachdb 'select ''?'',count(*)  FROM ?.sys.tables WHERE type=''U'''

SELECT * FROM @T

#5


select count(name) tablenum from ysbi.dbo.sysobjects where type ='U' 这个是查库里所有的表的。


select d.name from master.dbo.sysdatabases d,master.dbo.ESP_INIT_LOG l where d.name = l.DATABASE_NAME  这个是查服务器所有的表的,怎么把这两个sql合成一个呢。

#6


引用 5 楼  的回复:
select count(name) tablenum from ysbi.dbo.sysobjects where type ='U' 这个是查库里所有的表的。


select d.name from master.dbo.sysdatabases d,master.dbo.ESP_INIT_LOG l where d.name = l.DATABASE_NAME  这个是查服务器所有……





select 
d.name ,a.tablenum
from master.dbo.sysdatabases d,
master.dbo.ESP_INIT_LOG l , 
(select count(name) tablenum from ysbi.dbo.sysobjects  AS a where type ='U' )  AS a
where d.name = l.DATABASE_NAME 

#7


引用 6 楼  的回复:
引用 5 楼 的回复:

select count(name) tablenum from ysbi.dbo.sysobjects where type ='U' 这个是查库里所有的表的。


select d.name from master.dbo.sysdatabases d,master.dbo.ESP_INIT_LOG l where d.name = l.DATABASE_N……


查出来的效果 是这样的。
bkysbase 58
carbase 58
jlyszzx 58
master 58
xjysbase 58
ysbase1 58
ysbase2 58
ysbi 58
Wang 58
carbase 58
master 58
cwbase80 58
cwbase3 58
mydb 58
ysbi 58

#8


sp_msforeachdb 'print ''?'' exec(''select ''''?'''',count(*) as [表数] from ?.sys.objects where type=''''U'''''')'