0

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

4

2 回答 2

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.

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

于 2013-08-21T14:47:27.387 回答
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
于 2013-08-21T14:37:05.343 回答