在Sql中怎样查询每一个表中数据所以的硬盘空间的

解决方案 »

  1.   


    到data文件里找到相应文件看一下...
      

  2.   

    exec sp_MSforeachtable @command1="sp_spaceused '?'"
      

  3.   

    sp_spaceused好象只能查一个表,若要看数据库所有的表怎样查看
     sp_MSforeachtable 能不能介绍详细点。
    谢谢!
      

  4.   


    /*
    通过系统查看数据库内表使用的硬盘空间分配
    */SELECT a3.name AS [Schema 名称],
    a2.name AS [表名称],
    a1.rows as 记录条数,
    (a1.reserved + ISNULL(a4.reserved,0))* 8 AS [保留空间(K)],
    a1.data * 8 AS [数据使用空间(k)],
    (CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data 
    THEN (a1.used + ISNULL(a4.used,0)) - a1.data 
    ELSE 0 END) * 8 AS [索引使用空间(k)],
    (CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used 
    THEN (a1.reserved + ISNULL(a4.reserved,0)) - a1.used 
    ELSE 0 END) * 8 AS [未用空间(k)],
    a1.data * 8*1024/(CASE WHEN a1.Rows=0 THEN 1 ELSE a1.Rows END) 平均每条记录长度
    FROM
    (
    SELECT
    ps.object_id,
    SUM (
    CASE
    WHEN (ps.index_id < 2) THEN row_count
    ELSE 0
    END
    ) AS [rows],
    SUM (ps.reserved_page_count) AS reserved,
    SUM (
    CASE
    WHEN (ps.index_id < 2) THEN 
    (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)
    ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count)
    END
    ) AS data,
    SUM (ps.used_page_count) AS used
    FROM sys.dm_db_partition_stats ps
    GROUP BY ps.object_id) AS a1
    LEFT OUTER JOIN
    (
    SELECT
    it.parent_id,
    SUM(ps.reserved_page_count) AS reserved,
    SUM(ps.used_page_count) AS used
    FROM sys.dm_db_partition_stats ps
    INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
    WHERE it.internal_type IN (202,204)
    GROUP BY it.parent_id
    ) AS a4 ON (a4.parent_id = a1.object_id)
    INNER JOIN sys.all_objects a2  ON ( a1.object_id = a2.object_id )
    INNER JOIN sys.schemas a3 ON (a2.schema_id = a3.schema_id)
    WHERE a2.type <> N'S' and a2.type <> N'IT'
    ORDER BY [保留空间(K)] DESC
      

  5.   

    楼上的
    怎么说这些表不存在
    sys.dm_db_partition_stats
    sys.internal_tables
    sys.all_objects
    sys.schemas
      

  6.   

    这些都是SQL2005的系统表或者试图
    sp_MSforeachtable 
    这个是MS的一个系统扩展存储过程就像sp_help一样,是遍历系统所有表的.
    你把它往google上一输入,就可以看到好多他的说明...
      

  7.   

    sp_MSforeachtable 遍历所有表