我可以选择在SSMS中有记录的表列表吗?

时间:2013-08-21 14:23:24

标签: sql-server sql-server-2008-r2

我有一个恢复到我的服务器的数据库的备份,它有超过100个表,但我知道只有少数几个有记录。是否可以编写一个查询来选择包含记录的表列表?这是SQL Server 2008 R2。

2 个答案:

答案 0 :(得分:2)

放手一搏:

SELECT so.name,
       ps.row_count
FROM   sys.dm_db_partition_stats ps
       INNER JOIN sys.objects so
         ON ps.object_id = so.object_id
WHERE  so.type = 'u'
       AND row_count > 0
ORDER  BY so.name

可能值得注意的是,行数不能保证100%的准确性(我相信这个信息仅作为查询优化器的指导),如果你需要它准确的话就像运行一个实际的表一样使用COUNT进行扫描。

但是,由于您只想检查是否有任何行,这应该足够了。

答案 1 :(得分:1)

试试这个:

CREATE TABLE #tab_info
( 
    [name] NVARCHAR(128),
    [rows] CHAR(11),
    reserved VARCHAR(18), 
    data VARCHAR(18), 
    index_size VARCHAR(18),
    unused VARCHAR(18)
) 

INSERT #tab_info EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' 

SELECT *
FROM   #tab_info
WHERE [rows] > 0