Pet*_*Sun 9 t-sql sql-server ssms
有没有办法SQL Server Management Studio Express如何列出所有非空表?我有超过100个表要检查数据.
Mor*_*iao 12
你可以尝试使用sysindexes和INFORMATION_SCHEMA.TABLES:)
SELECT 'Table Name'=convert(char(25),t.TABLE_NAME),
'Total Record Count'=max(i.rows)
FROM sysindexes i, INFORMATION_SCHEMA.TABLES t
WHERE t.TABLE_NAME = object_name(i.id)
and t.TABLE_TYPE = 'BASE TABLE'
GROUP BY t.TABLE_SCHEMA, t.TABLE_NAME
HAVING max(i.rows)<=0
Run Code Online (Sandbox Code Playgroud)
Morris Miao 的解决方案使用了已弃用的sys.sysindexes视图;并根据表名执行INFORMATION_SCHEMA.TABLES的连接,不保证唯一;即使在数据库中。
Simon 的解决方案不限于当前数据库;但可以通过使用sys.tables进行改进:
SELECT r.table_name, r.row_count, r.[object_id]
FROM sys.tables t
INNER JOIN (
SELECT OBJECT_NAME(s.[object_id]) table_name, SUM(s.row_count) row_count, s.[object_id]
FROM sys.dm_db_partition_stats s
WHERE s.index_id in (0,1)
GROUP BY s.[object_id]
) r on t.[object_id] = r.[object_id]
WHERE r.row_count > 0
ORDER BY r.table_name;
Run Code Online (Sandbox Code Playgroud)