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

yinxiaoqi 2012-03-28 01:34:17
如题:
大概这样的格式
数据库名称 表数量
dome1 100
dome2 200
...全文
1071 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rfq 2012-03-28
  • 打赏
  • 举报
回复
sp_msforeachdb 'print ''?'' exec(''select ''''?'''',count(*) as [表数] from ?.sys.objects where type=''''U'''''')'
yinxiaoqi 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 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……
[/Quote]

查出来的效果 是这样的。
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
中国风 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 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 这个是查服务器所有……
[/Quote]




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
yinxiaoqi 2012-03-28
  • 打赏
  • 举报
回复
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合成一个呢。
q806294478 2012-03-28
  • 打赏
  • 举报
回复
顶[Quote=引用 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
[/Quote]
  • 打赏
  • 举报
回复

--查看当前数据库的所有表
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
中国风 2012-03-28
  • 打赏
  • 举报
回复
DECLARE @T TABLE(DBName sysname,TabCount int)
INSERT @T EXEC sp_msforeachdb 'select ''?'',count(*) FROM ?.sys.tables WHERE type=''U'''

SELECT * FROM @T
  • 打赏
  • 举报
回复

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

34,589

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧