@@version

Microsoft SQL Server 2008 (SP1) - 10.0.2775.0 (X64)

       Apr 30 2010 14:31:04

       Copyright (c) 1988-2008 Microsoft Corporation

       Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

 

--DROP TABLE T1

--TRUNCATE TABLE T1

 

-- 테이블 생성

create table t1 (

  col1 int

, b1 bit

, col2 varchar(1000)

, b2 bit)

 

-- 데이터 입력

insert into t1 select 255, 1, 'abcde', 1

go 100

 

-- dbid objectid 확인

select db_id('dba'), object_id('t1')

 

-- 페이지 번호(PID) 확인

dbcc ind (5, 421576540, 0)

 

-- 페이지 내용 확인

dbcc traceon(3604)

dbcc page(5, 1, 174, 2)

 

 

-- 페이지 내용 일부

090CC0B0:   62636465 30000900 ff000000 eb0400f0 †bcde 0... .... ....        

090CC0C0:   01001500 61626364 65300009 00ff0000 †.... abcd e0.. ....        

 

30         0 -- statusA

00         0 -- statusB

0900       9 --고정길이 컬럼의 길이+4 (2 bit 컬럼이 합쳐져서 1byte 사용함)

ff000000   255 -- 고정길이컬럼데이터int 255

eb         하위 2bit 11 -- bit 컬럼의 데이터 (2 bit 컬럼이 합쳐져서 1byte 사용함)

0400       4 -- 컬럼수

f0         하위 4bit 0000-- null 허용컬럼 bitmap

0100       1 -- 가변길이컬럼수

1500       21 -- 가변길이컬럼오프셋배열

61         a -- 가변길이컬럼데이터1

62636465   bcde -- 가변길이컬럼데이터2

 

이 상태에서 bit컬럼을 추가할 경우를 포함하여 8bit 컬럼이 넘어서 합계 1byte를 넘기 전에는 1byte를 사용하게 됨.

 

 

하만철 / Ha Man-cheol

 

 

AND