小编use*_*976的帖子

SQL Server 中 sys.sysrowsets 的用途是什么?

我只是想知道 SQL Server 中 sys.sysrowsets 的用法是什么?微软说它“存在于每个数据库中。为索引或堆的每个分区行集包含一行。” 但什么是分区?

另外这个表的 idmajor 和 idminor 是什么意思?我尝试查找表(246486340)的对象 ID,然后执行查询:

Select * from sys.sysrowsets where idmajor = 246486340
Run Code Online (Sandbox Code Playgroud)

结果有两条记录:

rowsetid           ownertype       idmajor idminor  numpart status  fgidfs  rcrows

72057603504865280   1              246486340     1     1        6     0     2582    
72057603612213248   1              246486340     6     1        2     0     2582
Run Code Online (Sandbox Code Playgroud)

但我认为应该只有一个具有该主要 id 的记录。

sql-server

5
推荐指数
1
解决办法
3646
查看次数

页眉中的 ObjID

我正在阅读这篇文章:存储引擎内部:页面剖析

我有一个数据库MyDB,数据库中有一个表MyTable

我有以下问题:

  1. 如果我这样做:

    (1) 使用以下查询查找表的对象 ID:

    Use MyDB;
    select sys.objects.name, sys.objects.object_id from sys.objects where (name = 'MyTable');
    
    Run Code Online (Sandbox Code Playgroud)

    (2) 然后使用以下命令查找分配给的所有页面MyTable

    dbcc ind(MyDB, 'MyTable', -1);
    
    Run Code Online (Sandbox Code Playgroud)

    (3)然后在结果表中,我选择其中一个数据页(页类型= 1),并使用以下命令:

    DBCC TRACEON(3604);
    DBCC PAGE (MyDB, 1, 17386, 3);
    
    Run Code Online (Sandbox Code Playgroud)

    那么在步骤(3)的转储内容(页头)中, m_objIdAllocUnitId.idObj)字段应该等于步骤(1)中获得的对象ID。那是对的吗?

    以及这是否适用于用户表和系统基表,例如sys.syscolpars基表?

    根据我的测试,以上两个结论都是正确的。

  2. 元数据:ObjectId 是什么意思?在文章中, 'metadata: objectId' <> m_objId。但是从我自己的测试来看,'metadata: objectId' 总是等于m_objId. 为什么?原始文章没有清楚地解释元数据。

我使用的是 SQL Server 2005、2008、2008 R2、2012 和 2014

sql-server metadata

5
推荐指数
1
解决办法
238
查看次数

标签 统计

sql-server ×2

metadata ×1