读书人

请教怎么查出数据库中有数据的所有的表

发布时间: 2013-10-24 18:27:21 作者: rapoo

请问如何查出数据库中有数据的所有的表名来

use test
go
select name into #tab from sysobjects where xtype='U'--得到所有表名




use test
go
select count(1) from sysobjects where xtype='U'--得到表的数量


if exists (select * from 表名 )--判断表里是否有数据
sql 数据库
[解决办法]
IF OBJECT_ID('tempdb.dbo.#TB') IS NOT NULL
DROP TABLE #TB
GO
create table #TB([name] VARCHAR(500))
DECLARE @Name VARCHAR(500),@SQL VARCHAR(MAX)
DECLARE NAME CURSOR
FOR
SELECT name FROM sysobjects where xtype='U'
OPEN NAME
FETCH NEXT FROM NAME INTO @Name
WHILE @@FETCH_STATUS=0
BEGIN
SET @SQL='
INSERT INTO #tb SELECT name FROM (select name,COUNT(1) AS num from syscolumns where id=object_id('+@NAME+') GROUP BY name HAVING COUNT(1)>0)t'
EXEC (@sql)
FETCH NEXT FROM NAME INTO @NAME
END
CLOSE NAME
DEALLOCATE NAME
GO

--SELECT * FROM #TB

[解决办法]
如果是2005及以后的版本,试试这个:

select t.name
from sys.tables t
inner join sys.partitions p
on t.object_id = p.object_id

where p.rows >0 --数据行数大于0


[解决办法]
这个适合sql server 2000,试试:
select distinct o.name
from sysobjects o
inner join sysindexes i
on o.id = i.id
where xtype = 'U'
and i.rows > 0 --数据行数大于0的

[解决办法]

select a.name 'TableName',b.rowcnt
from sys.tables a
inner join sys.sysindexes b on a.object_id=b.id and b.indid<=1
where b.rowcnt>0

读书人网 >SQL Server

热点推荐