知道为什么值 -96.00 超出 normalization_data 列(定义为 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
我怀疑 =96.00 不是行中的实际值。如果您查看上面的内存转储部分,内存转储会停在前一列。
您可以发布以下输出(将数据库名称替换为数据库名称)吗?
DBCC Traceon(3604);
DBCC Page('数据库名称', 1, 807256, 3);