SQL Server是以页存放数据的,有以下麻烦指教,谢谢!
1.怎样查询一个表中的数据是从哪一页开始存放的,及该表数据占用了多多少页(8K为页)?
2.怎样知道表中的数据页与索引页各页为多少页?
3.DBCC traceon的是做什么用的?
4.DBCC page可以查到表中哪些信息?谢谢!

解决方案 »

  1.   

    --1和2参考
    DBCC TRACEON(2588)
    dbcc help('ind')
    DBCC IND(CSDN, a, 0)exec sp_spaceused A --不精确
    DBCC SHOWCONTIG(a) --精确 SELECT --精确
    o.name,
    reserved_page_count = SUM(p.reserved_page_count),
    used_page_count=SUM(p.used_page_count),
    DataPages=SUM(
    CASE WHEN (p.index_id < 2) THEN (p.in_row_data_page_count + p.lob_used_page_count + p.row_overflow_used_page_count)
    ELSE p.lob_used_page_count + p.row_overflow_used_page_count END
    ),
    Rowcounts = SUM(
    CASE WHEN (p.index_id < 2) THEN row_count ELSE 0 END
    )
    FROM sys.dm_db_partition_stats p
    INNER JOIN sys.objects o
    ON p.object_id = o.object_id
    GROUP BY o.name--3.开始跟踪标记,只有打开标记,SQL SERVER才能输出某些信息.相当于开关。
    --4.可以查看到某一个PAGE页上的所有信息,页头,数据行(含数据),插槽等。
    细节参考这本书中相关章节:http://item.jd.com/11037616.html
      

  2.   


    -- 1.怎样查询一个表中的数据是从哪一页开始存放的,及该表数据占用了多多少页(8K为页)?
    -- 2.怎样知道表中的数据页与索引页各页为多少页?
    dbcc ind('[数据库名]','[表名]',-1)
    --> 返回结果,PagePID即为页编号,行数即为总页数.-- 3.DBCC traceon的是做什么用的?
    --> 启用指定的跟踪标记.