Sql server 我可以选择在SSMS中有记录的表列表吗?
我有一个数据库的备份,它被恢复到我的服务器上,服务器上有100多个表,但我知道只有少数表有记录。是否可以编写一个查询来选择包含记录的表列表?这是SQL Server 2008 R2。请尝试以下操作:Sql server 我可以选择在SSMS中有记录的表列表吗?,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我有一个数据库的备份,它被恢复到我的服务器上,服务器上有100多个表,但我知道只有少数表有记录。是否可以编写一个查询来选择包含记录的表列表?这是SQL Server 2008 R2。请尝试以下操作: CREATE TABLE #tab_info ( [name] NVARCHAR(128), [rows] CHAR(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18),
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
试试这个:
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
试一试:
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
运行实际的表扫描更好的了
但是,由于您只想检查是否有行,这就足够了。试一试:
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
运行实际的表扫描更好的了
但是,由于您只想检查是否有行,这就足够了