我有一个数据库的备份恢复到我的服务器,它有 100 多个表,但我知道其中只有少数有记录。是否可以编写一个查询来选择包含记录的表列表?这是 SQL Server 2008 R2。
问问题
45 次
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 回答