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 を取得しました...)
しかし、私は最後のバイトについての意味を知りません....
私を助けてください、どうもありがとう