如何批量获取tempdb中所有临时表的行数并快速验证?
获取当前会话本地临时表的行数
要批量获取当前会话所有本地临时表的行数,无需逐个指定表名,可以使用以下SQL查询:
SELECT t.name AS name, SUM(p.rows) AS row_count FROM tempdb.sys.tables t JOIN tempdb.sys.partitions p ON t.object_id = p.object_id WHERE t.name LIKE '#%' AND t.name LIKE '%' + CAST(@@SPID AS VARCHAR(10)) + '%' GROUP BY t.name ORDER BY t.name;
关键说明:
tempdb.sys.tables存储了tempdb内所有表的元数据,包含各类临时表tempdb.sys.partitions记录了每个表分区的行数,临时表默认单分区,用SUM()可兼容多分区场景@@SPID获取当前会话ID,用来过滤仅属于当前会话的本地临时表(本地临时表名称后缀会包含会话ID)
执行后会得到符合你预期的结果格式:
| name | row_count |
|---|---|
| #temp1 | 2000 |
| #temp2 | 0 |
| #temp3 | 0 |
内容的提问来源于stack exchange,提问作者Cfix
相关产品推荐
相关产品推荐

