DBCC CHECKDB Data Purity errors but no rows found Any idea why the value -96.00 is out of range for the normalization_data column (defined as numeric(14,2) )?



DBCC CHECKDB with DATA_PURITY flags this row:

Msg 2570, Level 16, State 3, Line 1
Page (1:807256), slot 0 in object ID 379148396, index ID 1, partition ID 72057594093830144, alloc unit ID 72057594099269632 (type "In-row data"). Column "normalization_data" value is out of range for data type "numeric".  Update column to a legal value.

Page info for slot 0:


PAGE: (1:807256)


BUFFER:


BUF @0x0B826044

bpage = 0x607FC000                   bhash = 0x00000000                   bpageno = (1:807256)
bdbid = 10                           breferences = 0                      bUse1 = 45874
bstat = 0x3c00009                    blog = 0x9ca22159                    bnext = 0x00000000

PAGE HEADER:


Page @0x607FC000

m_pageId = (1:807256)                m_headerVersion = 1                  m_type = 1
m_typeFlagBits = 0x0                 m_level = 0                          m_flagBits = 0x0
m_objId (AllocUnitId.idObj) = 936    m_indexId (AllocUnitId.idInd) = 256  
Metadata: AllocUnitId = 72057594099269632                                 
Metadata: PartitionId = 72057594093830144                                 Metadata: IndexId = 1
Metadata: ObjectId = 379148396       m_prevPage = (0:0)                   m_nextPage = (1:807257)
pminlen = 16                         m_slotCnt = 129                      m_freeCnt = 768
m_freeData = 7166                    m_reservedCnt = 0                    m_lsn = (19457:12767:78)
m_xactReserved = 0                   m_xdesId = (0:0)                     m_ghostRecCnt = 0
m_tornBits = 323122309               

Allocation Status

GAM (1:511232) = ALLOCATED           SGAM (1:511233) = NOT ALLOCATED      
PFS (1:800712) = 0x40 ALLOCATED   0_PCT_FULL                              DIFF (1:511238) = NOT CHANGED
ML (1:511239) = NOT MIN_LOGGED       

Slot 0 Offset 0x60 Length 54

Record Type = PRIMARY_RECORD         Record Attributes =  NULL_BITMAP VARIABLE_COLUMNS

Memory Dump @0x69A5C060

00000000:   30001000 53595302 80250000 00000000 †0...SYS..%......         
00000010:   0500e003 0024002b 00360041 43482046 †.....$.+.6.ACH F         
00000020:   4f4f4453 30342d32 30303534 36303030 †OODS04-200546000         
00000030:   20303233 3130†††††††††††††††††††††††† 02310                   

Slot 0 Column 0 Offset 0x4 Length 3

company_id = SYS                     

Slot 0 Column 1 Offset 0x1b Length 9

normalization_set_id = ACH FOODS     

Slot 0 Column 2 Offset 0x24 Length 7

time_period_id = 04-2005             

Slot 0 Column 3 Offset 0x2b Length 11

code = 46000 02310                   

Slot 0 Column 4 Offset 0x7 Length 9

normalization_data = -96.00
I suspect that =96.00 is not the actual value in the row. If you look at the memory dump section above, the memory dump stops at the previous column.

Can you post the output from the following (replacing Database Name with the name of the database)?

DBCC Traceon(3604);

DBCC Page ('Database Name', 1, 807256, 3);