最近公司的数据库发现有表的数据被弄掉了,有些数据表记录为0,于是想找出此数据库中到底有哪些数据表的记录都为0以缩小分析范围,可使用如下的SQL Statement:
CREATE
TABLE #tmptb(tbname sysname,tbrows
int
,tbREserved varchar( 10),tbData varchar( 10)
,tbIndexSize varchar( 10),tbUnUsed varchar( 10))
INSERT INTO #tmptb exec sp_MSForEachTable ' EXEC sp_spaceused '' ? '''
SELECT * from #tmptb -- 列出所有表的情况
SELECT tbrows ,tbname FROM #tmptb WHERE tbrows = 0 -- 列出记录数据为0的表
ORDER BY tbname
DROP TABLE #tmptb
,tbREserved varchar( 10),tbData varchar( 10)
,tbIndexSize varchar( 10),tbUnUsed varchar( 10))
INSERT INTO #tmptb exec sp_MSForEachTable ' EXEC sp_spaceused '' ? '''
SELECT * from #tmptb -- 列出所有表的情况
SELECT tbrows ,tbname FROM #tmptb WHERE tbrows = 0 -- 列出记录数据为0的表
ORDER BY tbname
DROP TABLE #tmptb
其中
tbname 表名
tbrows 记录数
tbREserved 保留空间
tbData 使用空间
tbIndexSize 索引使用空间
tbUnUsed 未用空间