0

DBCC IND と DBCC page についてテストしました。エンジン: SQL Server 2008

脚本:

CREATE TABLE dbo.t2
(
ID int,
Col1 varchar(10),
Col2 varchar(20)
);


INSERT INTO dbo.t2 SELECT 1,REPLICATE('a',10),REPLICATE('b',10)


DECLARE @DBID int,@TableID int;
SELECT @DBID=DB_ID(),@TableID=OBJECT_ID('dbo.t2');
DBCC IND(@DBID,@TableID,-1)

--これは次を示します: 1 274 1 278 1307151702 0 1 72057594039107584 行内データ 1

DBCC TRACEON (3604)
--DBCC PAGE (@DBID, 1,22,3)
--then dump the page info
DBCC PAGE(@DBID, 1,274,1)

ショー:

データ:

スロット 0、オフセット 0x60、長さ 51、DumpStyle BYTE

レコード タイプ = PRIMARY_RECORD レコード属性 = NULL_BITMAP VARIABLE_COLUMNS VERSIONING_INFO レコード サイズ = 51 メモリ ダンプ @0x000000000F7EA060

0000000000000000:70000800 01000000 03000002 001B0025†P ...............%0000000000000010:00616161 61616161 616161616162 62626262 .AAAAAAABBBBBM2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 . 0000000000000030: 00000 †††††††††††††††††††††††††††††††...

オフセット テーブル:

行 - オフセット 0 (0x0) - 96 (0x60) 説明しようとしています:

バイト 1 0x70 01110000

ビット 0: SQL サーバー 2005/2008

ビット 1 ~ 3 : プライマリ データ

ビット 4 : HAS NULL

ビット 5: VAR あり

ビット 6: 使用しない

ビット 7: ゴーストではない

2 番目のバイト

0x00 : 使用しない

第 3 バイト

0x0008 : オフセット 8

固定長 int 、値1を得ました

次のバイト

0300 : 3列

00 : ヌルではない

0002 :2列

var column endoffset 0x001B (値 aaa を取得しました....)

var column end offset 0x0025 (値 bbbb を取得しました...)

しかし、私は最後のバイトについての意味を知りません....

私を助けてください、どうもありがとう

4

3 に答える 3

0

マスター、ポール・ランダルより

ストレージ エンジンの内部: ページの構造。そしてエクステント。そして記録

最後のリンクへのコメントによると、これはレコードの一部です。

于 2010-12-17T04:46:38.587 に答える
0

これは、14 バイトのバージョン管理タグ [timestamp、tempdb へのポインター] です。

于 2010-12-17T04:10:26.460 に答える
0

各データベース行は、行のバージョン管理情報のために行の最後で最大 14 バイトを使用できます。行のバージョン管理情報には、バージョンをコミットしたトランザクションのトランザクション シーケンス番号と、バージョン管理された行へのポインターが含まれます。これらの 14 バイトは、次のいずれかの条件の下で、行が最初に変更されたとき、または新しい行が挿入されたときに追加されます。

READ_COMMITTED_SNAPSHOT または ALLOW_SNAPSHOT_ISOLATION オプションが ON です。

テーブルにはトリガーがあります。

複数のアクティブな結果セット (MARS) が使用されています。

現在、テーブルでオンライン インデックス作成操作が実行されています。

于 2010-12-17T05:45:25.540 に答える